【发布时间】:2012-03-21 19:21:23
【问题描述】:
我刚刚实现了FluentValidation,一切看起来都很棒,除了一个尴尬的小细节。
@using (Html.BeginForm("Create", "Posts", FormMethod.Post, new { @class = "create-post" }))
{
@Html.TextBoxFor(m => m.Text, new { @class = "post-input" })
@Html.Validation(m => m.Text)
<input type="submit" value="@Html.Resource("Publish")" />
}
public static MvcHtmlString Validation<T>(this HtmlHelper<T> helper, Expression<Func<T, string>> expression)
{
return helper.ValidationMessageFor(expression, null, Resources.Constants.ModelValidationMessageCssClass);
}
使用 ASP.NET MVC 3 的默认实现,这创建了一个 <span>,它具有验证器认为合适的任何类和 input-validation(这是我的资源中的一个)。 FluentValidation 似乎只是忽略了这个设置。知道如何将 CSS 类选择器添加到由FluentValidation 生成的跨度吗?
在类似的注释中,以它产生的以下输出为例:
<form method="post" class="create-post" action="/posts/create" novalidate="novalidate">
<input type="text" value="" name="Text" id="Text" data-val-required="complete this!" data-val-regex-pattern="long-stuff" data-val-regex="wrong regex!" data-val="true" class="post-input input-validation-error">
<span data-valmsg-replace="true" data-valmsg-for="Text" class="field-validation-error">
<span for="Text" generated="true" class="">wrong regex!</span>
</span>
<input type="submit" value="Publicar!">
</form>
我觉得我又回到了 ASP.NET WebForms :( .. ,我怎样才能删除 novalidate="true" 或 generated="true" 属性之类的东西?不过,我可以使用 data 属性。
【问题讨论】:
标签: c# javascript css asp.net-mvc-3 fluentvalidation