使用无效变量名称的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) { ... } 

您可以使用BindAttributePrefix属性来有效地“剥离”前缀。

 public JsonResult Validate([Bind(Prefix="HouseState.Name")]string Name) 

所以name="HouseState.Name"在绑定时变成了Name