使用无效变量名称的jQueryvalidation远程:如何修复?
我正在使用jQuery Validation进行远程validation。
我试图在MVC中调用我的服务器端代码,但问题是我的变量是在嵌套类中:
public class Customer { public State HouseState {get;set;} } public class State { public string Name {get;set;} }
在我的* .cshtml中我有这个:
@Html.TextBoxFor(m => m.HouseState.Name, new { placeholder = "State Name"})
我正在添加validation:
$.validator.addMethod("verify", verify); $('#HouseState_Name').rules('add', { verify: true, remote: '@Url.Content("~/Home/Validate")', messages: { verify: "No!" } });
在这种情况下,它将生成如下的GET请求:
http://localhost/Home/Validate?HouseState.Name=CA
问题是它希望我的服务器中的变量是House.Name
是C#中无效的变量名。
有没有办法在客户端中自定义此变量或为服务器中的变量创建别名? 我已经尝试过使用FormCollection
并且它有效,但远非完美。
public JsonResult Validate(FormCollection form) { ... }
我想要一些像这样工作的方法:
public JsonResult Validate(string stateName) { ... }
您可以使用BindAttribute
的Prefix
属性来有效地“剥离”前缀。
public JsonResult Validate([Bind(Prefix="HouseState.Name")]string Name)
所以name="HouseState.Name"
在绑定时变成了Name