Имя параметра в действии удаленной проверки модели MVC3

Я использую атрибут удаленной проверки для 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 ноль в действии, я тоже пытаюсь MainModelSSN, MainModel_SSN но без изменений и всегда ноль, каково ваше предложение? какое правильное имя для MainModel.SSN в действии аргумент?

3 ответа

Решение

Вы можете попробовать указать префикс:

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

MainModel это префикс, который используется для отправки данных => MainModel.SSN,

Другой, более точный, ответ Рахула:

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.

Я решил эту проблему, просто используя первый параметр строки запроса:

public JsonResult IsValidImageUrl(string value) {

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


    //....            

    return Json(result, JsonRequestBehavior.AllowGet);                    
}
Другие вопросы по тегам