4

我对属性使用远程验证属性SSN,在视图页面中我使用通用视图,然后 ssn 字段如下:

@Html.EditorFor(model => model.MainModel.SSN)
@Html.ValidationMessageFor(model => model.MainModel.SSN)

我的行动是:

public JsonResult IsValidaSSN(string SSN) {

  //....

    return Json(result, JsonRequestBehavior.AllowGet);

}

SSN在行动中总是为空,我也尝试过MainModelSSNMainModel_SSN但没有变化,总是为空,你的建议是什么?MainModel.SSNin action 参数的正确名称是什么?

4

3 回答 3

4

您可以尝试指定前缀:

public Action IsValidaSSN([Bind(Prefix = "MainModel")] string SSN) 
{
    //....
    return Json(result, JsonRequestBehavior.AllowGet);
}

MainModel是用于发送数据的前缀 => MainModel.SSN

于 2012-05-12T09:00:46.680 回答
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 相关联的东西的关联。

于 2014-02-25T17:56:45.743 回答
3

我只使用第一个查询字符串参数解决了这个问题:

public JsonResult IsValidImageUrl(string value) {

    if (value == null && Request.QueryString.Count == 1) {
            value = Request.QueryString[0];
        }


    //....            

    return Json(result, JsonRequestBehavior.AllowGet);                    
}
于 2012-11-20T16:45:12.590 回答