Удаленная проверка в ASP.Net MVC 3: Как использовать дополнительные методы в действии
Я использую новый атрибут RemoteAttribute ASP.Net MVC 3 для отправки удаленного вызова методу действия, имеющему один параметр. Теперь я хочу передать второй параметр, используя свойство AdditionalFields:
[Remote("IsEmailAvailable", "Users", AdditionalFields = "InitialEmail")]
Где IntialEmail - это скрытое поле в представлении. Действие выглядит так:
public JsonResult IsEmailAvailable(
string email,
string InitialEmail)
{
//etc.
}
Когда визуализируется представление, скрытое поле заполняется, но когда метод действия запускается удаленно, значение представляет собой пустую строку.
Я видел, что в других случаях чувствительность к регистру может быть проблемой, поэтому я гарантировал, что метод Action имеет тот же аргумент для обоих параметров.
Любые другие предложения? Эти дополнительные поля раньше назывались полями.
Спасибо,
Beaudetious
Ответы
Ответ 1
Странно. Это работает для меня:
Модель:
public class MyViewModel
{
[Required]
[Remote("IsEmailAvailable", "Home", AdditionalFields = "InitialEmail")]
public string Email { get; set; }
}
Контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
public ActionResult IsEmailAvailable(string email, string initialEmail)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
Вид:
@model AppName.Models.MyViewModel
@{
ViewBag.Title = "Home Page";
}
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.Email)
@Html.ValidationMessageFor(x => x.Email)
<input type="hidden" name="InitialEmail" value="[email protected]" />
<input type="submit" value="OK" />
}
IIRC была некоторая ошибка в ASP.NET MVC 3 RC2 с этой удаленной проверкой, которая была исправлена в RTM.
Ответ 2
Ваше скрытое поле должно находиться внутри той же формы, что и поле, которое вы проверяете (например, в примере Дарина), иначе значение скрытого поля не будет отправлено как параметр в метод действия проверки "public ActionResult IsEmailAvailable (строка email, string initialEmail)"
Ответ 3
функция IsEmailAvailable (строковая электронная почта, строка initialEmail) param email следует как электронная почта, которая точно такая же, как Property Email.