我有一个这样的对象:
public class Test
{
public String TestValue { get; set; }
}
对于这个对象,有一个模板的自定义编辑器:
@inherits System.Web.Mvc.WebViewPage<MvcApplication12.Models.TestModel>
@Html.EditorFor(m => m.TestValue)
和模型绑定器:
public class TestBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult providerValue =
bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".TestValue");
bindingContext.ModelState.SetModelValue(bindingContext.ModelName + ".TestValue", providerValue);
if (null != providerValue && !String.IsNullOrWhiteSpace(providerValue.AttemptedValue))
{
Test test = new Test();
test.TestValue = providerValue.AttemptedValue;
return test;
}
return null;
}
}
控制器的模型是这样的:
public class LogOnModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Required]
[Display(Name = "Value")]
public Test Value { get; set; }
}
您可以看到,我使用了 Test 对象,它将由上面显示的模板的自定义编辑器呈现。
剃刀语法是这样的:
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Value)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.Value)
@Html.ValidationMessageFor(m => m.Value)
</div>
模型中的数据注释表明,测试对象 (m.Value) 的输入是必需的。当该字段没有输入时,ModelBinder (TestBinder) 将返回 null。
然后验证消息显示如下:
但是名为“input-validation-error”的css类没有添加到输入字段中。
我该如何实现,在 Model-Error mvc3 上将 css 类“input-validation-error”添加到自定义编辑器模板的所有嵌套输入字段中?