我正在使用jQuery Validation 进行远程(https://jqueryvalidation.org/remote-method/)验证。
我试图在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)
{
...
}
发布于 2018-08-24 15:14:42
可以使用BindAttribute
的Prefix
属性来有效地“剥离”前缀。
public JsonResult Validate([Bind(Prefix="HouseState.Name")]string Name)
在绑定时,name="HouseState.Name"
只是Name
。
https://stackoverflow.com/questions/-100002397
复制相似问题