拥有以下课程:
public class MyObjB {
[Required(ErrorMessage = "I need it")]
public string Name { get; set; }
}
public class MyObjA {
[Required(ErrorMessage = "I need it")]
public string Name { get; set; }
public MyObjB MyObjB { get; set; }
}
视图:将模型用作MyObjA
@{ Html.EnableClientValidation(); }
@{Html.BeginForm();}
@Html.ValidationSummary("Some errors") @Html.AntiForgeryToken()
// MyObjA part
@Html.LabelFor(model => model.Name):
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessage("Name", "*")
// MyObjB part
@Html.LabelFor(model => model.MyObjB.Name):
@Html.TextBoxFor(model => model.MyObjB.Name)
@Html.ValidationMessage("MyObjB.Name", "*")
@{ Html.EndForm(); }
EnableClientValidation不起作用.... 我认为这与“。”有关。 (点)使用和javacript的问题,但我可能是错的,原因是不同的。
如果我使用相同的表单,但仅用于MyObjB,它将正常工作并且ClientValidation正确完成。
您如何将EnableClientValidation与子属性一起使用?
谢谢。
编辑1 - 对于字节请求
查看:
@Html.TextBoxFor(model => model.MyObjB.Name)
HTML结果:
<input id="MyObjB_Name" name="MyObjB.Name" type="text" value="" />
答案 0 :(得分:0)
我认为你必须在web.config中使用以下内容:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
答案 1 :(得分:0)
只要您在objA中对objB进行引用和初始化,它就会起作用,因为您的视图模型是ObjA
答案 2 :(得分:-1)
您需要做的是为您的视图创建一个viewmodel 它将具有A类和B类属性
public class ViewModelAB
{
[validation error message]
A PropertyA { get; set; }
[validation error message]
B PropertyB { get; set;}
}
并将此viewmodel模型strogly类型用于您的视图