Я знаю, что, возможно, название звучит немного странно, но я считаю, что моя проблема странная. У меня есть приложение ASP.NET MVC 4 (это мое первое приложение MVC реального мира) с Razor view-engine.View form вызывает обратную передачу всех действий контроллеров с помощью [HttpPost] с разных контроллеров
У меня есть вид макета, где я рендеринг два частичных вида, как это:
<!-- Login -->
@Html.Action("RenderLoginPopup", "Login")
<!-- Registration -->
@Html.Action("RenderRegisterPopup", "Login")
Каждые из этих действий со стороны Вход контроллера просто визуализирует частичный вид:
[ChildActionOnly]
public ActionResult RenderLoginPopup()
{
return PartialView("Partial/_LoginPopupPartial");
}
Только для (оба построены одинаково), частичный вид входа содержит форму ajax следующим образом:
@using (Ajax.BeginForm("Login", "Login", new AjaxOptions()
{
HttpMethod = "POST",
OnSuccess = "loginResponseReceived"
}, new { @id = "loginForm" }))
Войти действие от Вход контроллера (цель формы) подписывается со следующими атрибутами (стоит отметить, и обратите внимание на HttpPost один):
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public JsonResult Login(LoginModel model)
{ }
До сих пор, так хорошо ... все работает отлично - как логин, так и действия регистра работают без каких-либо проблем.
Проблема, о которой я хочу поговорить, когда у меня есть @ Html.BeginForm() в представлении, которое загружается вместе с основным макетом. Например, если у меня есть чистая и простая форма, как это:
@using (Html.BeginForm())
{
<input type="hidden" name="name"/>
<input type="submit" value="Send"/>
}
вместе с CaptionExtendedController контроллера:
[HttpPost]
public ActionResult Index(string nume)
{
return View();
}
Таким образом, в конце концов, в моем окончательном HTML сгенерированного файл у меня будет 3 формы - 2 для входа и регистрации (ajax) и одна простая форма, сгенерированная из последнего представления. Пожалуйста, имейте в виду, что все три формы независимы (что означает, что они не являются одними из них).
Проблема в том, что каждый раз, когда я нажимаю кнопку «Отправить» из последней формы, все вызовы, которые подписываются с атрибутом [HttpPost] из моего представления (Login, Register from LoginController и Index из CaptionExtendedController).
ПОЧЕМУ ??? Чтобы иметь временное исправление, я удалил атрибут [HttpPost] из действий Login и Register, и теперь он работает, но я не думаю, что это правильно.
Пожалуйста, есть кто-нибудь, кто может объяснить мне, почему это происходит, и в конечном итоге указать мне на правильное направление в решении этой проблемы?
Заранее спасибо.
Я бы присвоил идентификатор каждой форме и обработал их с помощью jQuery, как [здесь] (http://stackoverflow.com/a/5410121/956051) – Lars
Первые 2 уже сделаны с jquery через Ajax.BeginForm, но я необходимо, чтобы третья была нормальной. Кроме того, если бы я сделал это так, это будет означать, что все формы с этого момента, с моего сайта должны быть выполнены с использованием Ajax.BeginForm или jquery, правильно? На данный момент это не похоже на вариант. Спасибо за ваше время. – Edi