【问题标题】:Assigning id to validation message将 id 分配给验证消息
【发布时间】:2014-01-13 20:17:28
【问题描述】:

我正在尝试将 id 分配给动态显示验证消息的范围。难道我做错了什么?

 <div>@Html.ValidationMessageFor(model => model.Title,new{id="prjTitle"})</div>

它抛出 Argument type is not assignable to parameter string

【问题讨论】:

    标签: asp.net asp.net-mvc validation


    【解决方案1】:

    只需使用正确的重载:

     @Html.ValidationMessageFor(model => model.YourProperty, "", new { @class = "a-class-if-you-want-one", id = "yourId" })
    

    【讨论】:

      【解决方案2】:

      没有只接受 linq 表达式和 html 属性对象的重载。

      根据MSDN,有一个重载,它接受一个 linq 表达式、一个错误消息(字符串)和一个 html 属性对象,如下所示:

      @Html.ValidationMessageFor(model => model.Title,"entry invalid",new{id="prjTitle"})
      

      【讨论】:

      • 如果我尝试这种方式,它会将 id 获取到父跨度而不是错误消息跨度。下面是上面添加 id 后呈现的 html。 输入项目标题
      • 我想剩下的就是编写一个自定义验证消息,如下所述:stackoverflow.com/a/8381685/1783240
      【解决方案3】:
      public static MvcHtmlString IDValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string id)
          {
              var validationString = Regex.Replace(htmlHelper.ValidationMessageFor(expression).ToString(), @"^data-valmsg-for=""*\""$", String.Format("data-valmsg-for=\"{0}\"", id));
      
              return MvcHtmlString.Create(validationString);
          }
      

      【讨论】:

      • 欢迎来到 StackOverflow。您能否提供更多信息,该代码如何回答这个问题?
      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 2016-10-09
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2013-10-28
      • 2018-08-20
      • 2018-12-08
      相关资源
      最近更新 更多