我知道也許標題聽起來有點不可思議,但我相信,我的問題是確實怪異。我有一個使用Razor視圖引擎的ASP.NET MVC 4應用程序(這是我的第一個MVC真實應用程序)。查看錶格上回發呼籲所有控制器與[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,RegisterController和CaptionExtendedController中的Index)被調用。
WHY ???爲了有一個臨時修復,我已經從登錄和註冊操作中刪除了[HttpPost]屬性,現在它正在工作,但我認爲這不正確。
請問有人能解釋我爲什麼會發生這種情況,並最終指出我解決這個問題的正確方向?
預先感謝您。
我會爲每個表單分配一個ID並像jQuery一樣處理它們[here](http://stackoverflow.com/a/5410121/956051) – Lars
前2個已經通過jQuery通過Ajax.BeginForm創建,但是我需要有第三個是正常的形式。另外,如果我這樣做,這將意味着從現在開始,我的網站上的所有表單都應該使用Ajax.BeginForm或jquery完成,對嗎?這聽起來不像現在的選擇。感謝您的時間。 – Edi