Имя параметра в действии удаленной проверки модели 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);
}