2017-09-01 1757 views
-1

在我的ASP.NET Core 1.1.1应用程序model validation不起作用。我注意到一些默认的views(例如login.cshtml,Register.cshtml,在创建应用程序时由VS2017创建)在最后具有以下代码。但是这些默认视图实际上是部分视图。我的意见不是部分意见,是否应将以下内容添加到我的views末尾?或者有什么我应该增加我的看法是不偏意见结束:对于数据验证,添加Html.RenderPartialAsync(“_ ValidationScriptsPartial”)的位置?

@section Scripts { 
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } 
} 
+0

当你说“不工作”你是什么意思?它可以是“不工作”在客户端(JavaScript),“不工作”在服务器上(可以是很多事情)。究竟发生了什么(定义“不工作”)? – dime2lo

+0

@ dime2lo它不适用于客户端。详细信息在我的[post](https://stackoverflow.com/q/46008588/1232087)上。 – nam

回答

0

好,

@section Scripts { 
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } 
} 

用于“客户端验证”(JavaScript的)。如果表单无效,则不会让用户发送表单(根据模型验证)。

如果你打开你的/Views/Shared/_Layout.cshtml you'll在它的底部看到下面的代码:

@RenderSection("Scripts", required: false) 

该代码块,其中来自@section Scripts内容将被注入,在这些情况下,部分视图_ValidationScriptsPartial的内容。

由于required: false,如果您的视图不需要客户端验证,您不需要添加@section Scripts代码。

关于Partial_ValidationScriptsPartial视图名称,它表示视图本身是部分视图,它不是直接供应视图。它不能与“它应该用于部分视图”混淆。

更多信息:

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/layout#sections

Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine

问候。

+0

你已经回答了我的问题,除了我也对是否有'@section脚本{await Html.RenderPartialAsync(“_ ValidationScriptsPartial”); } }'可以添加到任何需要客户端验证的视图中,因为上面的代码中的partial属性让我认为上面的代码仅适用于部分视图。但我认为我没有把它正确地放在帖子中。为了其他读者的利益,您可能希望在您的“回复”中添加一条关于我的困惑的单行公文。我会将其标记为“答案”。 – nam

+1

已编辑答案,所以其他人不会对视图名称中的“部分”感到困惑。 (补充:关于_ValidationScriptsPartial视图名中的Partial,它意味着视图本身是部分的,它不是直接服务的,不能与“它应该在部分视图中使用”混淆)。 – dime2lo