В этот вопрос отключение кнопки отправки для предотвращения множественных обратных передач было жизнеспособным решением для предотвращения (не злонамеренных) пользователей повторной публикации несколько раз.
Эта опция не работаетхорошо, если у вас есть представление с несколькими кнопками отправки.Возьмите следующий пример.
// Представление:
@using (Html.BeginForm("Catalog", "Images", FormMethod.Post, new { onsubmit = "Utility.disable_buttons(this.id);", id = "catalog_form" }))
{
<p>
<input type="submit" name="btnSubmit" value="Clear" /> |
<input type="submit" name="btnSubmit" value="Catalog" /> |
<input type="submit" name="btnSubmit" value="Update" /> |
@Html.ActionLink("Back to List", "Index")
</p>
}
// Контроллер:
[HttpPost]
public ActionResult Catalog(string btnSubmit)
{
switch (btnSubmit)
{
case "Catalog":
//More differenter code
break;
case "Clear":
//Different code
break;
case "Nothing":
//Code
break;
}
return View();
}
В представлении есть три различных действия отправки.Если кнопки отключены, их значения не будут переданы, и контроллер не будет знать, какая кнопка вызвала отправку.(Контроллер всегда получает значение NULL.) К сожалению, атрибут submitdisabledcontrols, похоже, не решает эту проблему в MVC.Кто-нибудь знает, как передать на сервер значения отключенного элемента управления?