我对SSN
属性使用远程验证属性,在视图页面I中使用通用视图,然后ssn字段如下:
@Html.EditorFor(model => model.MainModel.SSN)
@Html.ValidationMessageFor(model => model.MainModel.SSN)
和我的行动是:
public JsonResult IsValidaSSN(string SSN) {
//....
return Json(result, JsonRequestBehavior.AllowGet);
}
但始终SSN
在操作中为空,我也尝试MainModelSSN
,MainModel_SSN
但没有更改且始终为空,您的建议是什么?动作参数中MainModel.SSN
的正确名称是什么?
答案 0 :(得分:4)
您可以尝试指定前缀:
public Action IsValidaSSN([Bind(Prefix = "MainModel")] string SSN)
{
//....
return Json(result, JsonRequestBehavior.AllowGet);
}
MainModel
是用于发送数据的前缀=> MainModel.SSN
。
答案 1 :(得分:4)
另一个,更准确一点,接受Rahul的回答:
public JsonResult IsValidImageUrl(string SSN) {
if (string.IsNullOrEmpty(SSN)) {
string parmname = Request.QueryString.AllKeys.FirstOrDefault(k => k.EndsWith(".SSN"));
if (!string.IsNullOrEmpty(parmname)) {
SSN = Request.QueryString[parmname];
}
}
//.... etc.
这可以使用多个参数。
旁注,您可能想重新考虑“GET”JSON方法与SSN相关的任何关联。
答案 2 :(得分:3)
我只使用第一个查询字符串参数解决了这个问题:
public JsonResult IsValidImageUrl(string value) {
if (value == null && Request.QueryString.Count == 1) {
value = Request.QueryString[0];
}
//....
return Json(result, JsonRequestBehavior.AllowGet);
}