cja*_*ues 2 validation asp.net-mvc jquery-validate
我是ASP.NET MVC的新手,我遇到了Html.TextBoxFor()的问题 - 它给渲染输入的name属性一个点.
<%= Html.TextBoxFor(m => m.Box.Name, new { id= "txtName" }) %>
Run Code Online (Sandbox Code Playgroud)
呈现以下HTML:
<input type="text" value="" name="Box.Name" id="txtName">
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery Validation插件进行客户端验证.由于Box.Name中的点(导致javascript错误),它无法验证此输入.
我的模型看起来像这样:
public class Box {
[Required(ErrorMessage = "Please enter a name")]
public string Name { get; set; }
public int BoxMaterialID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的ViewModel看起来像这样:
public class BoxViewModel
{
public Box Box { get; set; }
public List<BoxMaterial> BoxMaterial { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样:
public ActionResult New(FormCollection postData)
{
Box box = new Box();
try
{
UpdateModel(box, "Box");
boxService.SaveBox(box);
}
catch
{
return View(new BoxViewModel(box));
}
return RedirectToAction("Index", "Boxes");
}
Run Code Online (Sandbox Code Playgroud)
服务器端验证就像使用模型上的DataAnnotations一样.我似乎唯一的问题是客户端验证,因为"." 在name属性中.
谢谢你的帮助!
提交表单时,默认模型绑定器将使用添加到名称的点,以便正确填充模型.就验证而言,您可以将其设置为:
$("#myForm").validate({
rules: {
'Box.Name': {
required: true
}
},
messages: {
'Box.Name': {
required: 'some error message'
}
}
});
Run Code Online (Sandbox Code Playgroud)