【问题标题】:Enable client validation in Razor views (ASP MVC 3)在 Razor 视图中启用客户端验证 (ASP MVC 3)
【发布时间】:2011-04-11 08:17:36
【问题描述】:

我尝试使用这行代码添加客户端验证:

@Html.EnableClientValidation()

但我不断收到此错误消息:

编译器错误消息:CS1502:“Microsoft.WebPages.WebPageUltimateBase.Write(Microsoft.WebPages.Helpers.HelperResult)”的最佳重载方法匹配包含一些无效参数

这是否适用于其他任何人,还是 ASP MVC 3 中的另一种方法?

【问题讨论】:

    标签: asp.net-mvc razor asp.net-mvc-3


    【解决方案1】:

    您可以改为使用以下代码代替预期的代码行。

    @(ViewContext.ClientValidationEnabled = true)
    

    可能是对 htmlhelper 的扩展方法的疏忽。

    其实可以通过如下方式使用HtmlHelper方法

    @{ Html.EnableClientValidation(); }
    

    【讨论】:

    • 感谢您的回复,但是当我将您的代码行放入视图时,它所做的只是将True 输出到页面中。我必须将代码放在任何特殊的地方吗?现在我把它放在我的 @using(Ajax.BeginForm(... 上面
    • 它不能与 @ 一起工作的原因是因为 @ 期望向浏览器写入一些内容,但 EnableClientValidation 不返回任何内容,因此 Microsoft.WebPages.WebPageUltimateBase.Write 失败
    • 好的,我想这行得通。我没有让我的客户端验证触发,但这可能是因为其他原因。
    • 嗯...好吧,首先我要检查页面的来源,以确保正在输出验证 JS。 (我确定它是,但它总是需要检查)然后确保你有 @Html.ValidationMessageFor(m => m.Property) 以便验证消息知道去哪里。
    • 谢谢,我忘记了验证信息。现在可以使用了!
    【解决方案2】:

    嘿,在 ASP.NET MVC3 中,不需要在视图页面中添加 Html.EnableClientValidation(),只需在 webconfig 文件中启用 clientValidation 即可,如下所示:

    <appSettings>
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    

    【讨论】:

    • 顺便说一句,您还应该将 jqueryvalidation js 文件放在您的视图或布局页面中。
    • 是:NuGet jQuery.Validation.Unobtrusive 并为 jquery.validate.min.jsjquery.validate.unobtrusive.min.js 添加 &lt;script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"&gt;&lt;/script&gt;
    【解决方案3】:

    这个标签

         @{ Html.EnableClientValidation(false); }
    

    必须在

    之前
      @using (Html.BeginForm())
    

    【讨论】:

      【解决方案4】:

      您是否使用页面上的 html &lt;form&gt; 元素而不是 Html.BeginForm 来创建您的 html 表单。

      我遇到了同样的问题并发现这是因为我没有使用 Html.BeginForm 创建我的 FORM 导致所需的输入属性 data-val-required="The Email field is required." data-val="true" class="input-validation-error 并且验证的占位符没有被注入页面即使我在查看页面上插入了@Html.ValidationMessageFor(m =&gt; m.User.Role)

      【讨论】:

        【解决方案5】:

        就我而言,我使用的不是EditorFor,而是TextBoxFor!

        确保你使用:

                     <td>@Html.EditorFor(m => m.Email)</td>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-06
          • 1970-01-01
          • 2023-03-22
          • 1970-01-01
          • 2012-08-24
          • 2018-02-21
          相关资源
          最近更新 更多