我正在使用jQuery验证进行remote验证。
我正在尝试在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"})
我正在添加验证:
$.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)
{
...
}
答案 0 :(得分:3)
您可以使用Prefix
的{{1}}属性有效地“删除”前缀。
BindAttribute
所以public JsonResult Validate([Bind(Prefix="HouseState.Name")]string Name)
在绑定</ p>时变为name="HouseState.Name"