【问题标题】:For data validation, where to add Html.RenderPartialAsync("_ValidationScriptsPartial")?对于数据验证,在哪里添加 Html.RenderPartialAsync("_ValidationScriptsPartial")?
【发布时间】:2017-09-01 19:34:44
【问题描述】:

在我的ASP.NET Core 1.1.1 应用程序中,model validation 不起作用。我注意到一些默认的views(例如login.cshtmlRegister.cshtml,在创建应用程序时由VS2017创建)末尾有以下代码。但这些默认视图实际上是局部视图。我的观点不是部分观点,是否也应该将以下内容添加到我的 views 的末尾?或者我应该在不是部分视图的视图末尾添加什么:

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

【问题讨论】:

  • 当你说“不工作”是什么意思?它可以在客户端(javascript)上“不工作”,在服务器上“不工作”(可以是很多东西)。到底发生了什么(定义“不工作”)?
  • @dime2lo 它在客户端不起作用。详情在我的这个post

标签: validation razor asp.net-core-mvc data-annotations


【解决方案1】:

嗯,

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

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

如果您打开 /Views/Shared/_Layout.cshtml,您将在其底部看到以下代码:

@RenderSection("Scripts", required: false)

此代码块是来自@section Scripts 的内容将被注入的地方,在这种情况下,是部分视图_ValidationScriptsPartial 的内容。

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

关于_ValidationScriptsPartial 视图名称中的Partial,这意味着视图本身是局部的,不打算直接提供。它不能与“它应该在局部视图中使用”混淆。

更多信息:

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

问候。

【讨论】:

  • 你已经回答了我的问题,除了我也很困惑是否可以将 @section Scripts { @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } } 添加到任何需要客户端验证的视图中,因为上面代码中的词 partial 让我认为上面的代码仅用于部分视图。但我想我没有把它正确地放在帖子里。为了其他读者的利益,您可能想在您的Reply 中添加一个衬里以解决我的困惑。我会将其标记为Answer
  • 已编辑答案,因此其他人不会对视图名称中的“部分”感到困惑。 (补充:关于 _ValidationScriptsPartial 视图名称中的 Partial 表示视图本身是局部的,不打算直接提供。千万不要与“它应该在局部视图中使用”混淆)。
  • 这是一个很好的答案。它符合我的需要。谢谢@dime2lo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多