При использовании удаленной проверки на основе атрибутов необходимо выполнить двойную отправку - PullRequest
3 голосов
/ 04 марта 2011

В нашей модели есть поле с атрибутом [Remote]. Когда мы сохраняем это поле в скрытом элементе формы, а затем пытаемся отправить эту форму, мы должны дважды нажать кнопку отправки. Также интересно то, что во второй раз, когда мы щелкаем по нему, удаленная проверка не происходит (так говорит Fiddler).

Мысли

1 Ответ

0 голосов
/ 04 марта 2011

Невозможно воспроизвести.Если скрытое поле имеет атрибут Remote, вы не сможете отправить форму независимо от того, сколько раз вы нажмете кнопку отправки, если удаленная функция отправит false.

Например:

Модель:

public class MyViewModel
{
    [HiddenInput(DisplayValue = false)]
    [Remote("Check", "Home")]
    public string Id { get; set; }

    [Required]
    public string Name { get; set; }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            Id = "1"
        });
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }

    public ActionResult Check(string Id)
    {
        return Json(Id == "2", JsonRequestBehavior.AllowGet);
    }
}

Вид:

@model AppName.Models.MyViewModel

<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.EditorForModel()
    <input type="submit" value="OK" />
}

Поскольку удаленная функция всегда будет возвращать false, эта форма не может бытьОтправлено.Если удаленная функция возвращает true, достаточно одного щелчка, чтобы отправить его, при условии, конечно, что другая проверка прошла.

...