2013-08-17 41 views
11

按鈕我要創建具有下一個按鈕和以前按鈕切換顯示的圖像的頁面。ASP.NET MVC:多使用提交Ajax.BeginForm

爲此目的我創建了一個Ajax.BeginForm並插入到它,圖像和兩個提交按鈕。

我可以(我應該)已經多次提交Ajax.BeginForm裏面的按鈕?

控制器將如何處理每個單獨提交?

回答

23

試試這個,

查看

@model TwoModelInSinglePageModel.RegisterModel 
@using (Ajax.BeginForm("DYmanicControllerPage", "Test", FormMethod.Post,null, new { id = "frmSignUp" })) 
{ 
    <div> 
       <input type="hidden" id="" name="hidden2" id="hdasd" /> 
       @Html.HiddenFor(m => m.hidden1) 
       @Html.LabelFor(m => m.Name) 
       @Html.TextBoxFor(m => m.Name) 
       @Html.ValidationMessageFor(m => m.Name) 
      </div> 
      <br /> 
      <div> 
       @Html.LabelFor(m => m.Address) 
       @Html.TextBoxFor(m => m.Address) 
       @Html.ValidationMessageFor(m => m.Address) 
      </div> 
      <br /> 
      <div> 
       @Html.LabelFor(m => m.PhoneNo) 
       @Html.TextBoxFor(m => m.PhoneNo) 
       @Html.ValidationMessageFor(m => m.PhoneNo) 
      </div> 

<input type="submit" value="Save" id="btnSave" name="ButtonType"/> 
<input type="submit" value="Next" id="btnNext" name="ButtonType" /> 


} 

控制器

[HttpPost] 
     public ActionResult DYmanicControllerPage(RegisterModel model, string ButtonType) 
     { 
     if(ButtonType == "Next") 
     { 
      // Do Next Here 
     } 
     if (ButtonType == "Save") 
     { 
      //Do save here 
     } 
     return JavaScript("REturn anything()"); 

     } 
+0

我在此操作中獲得的模型不包含頁面中的值。那是自然的嗎? – kroiz

+0

@kroiz抱歉,我不明白你想說什麼。可以發佈一些代碼,以便我可以幫助你。 – Jaimin

+0

謝謝,但這不是這個地方,我會開始一個新的問題。只要告訴我這一點:在上面的動作「DYmanicControllerPage」,模型「RegisterModel模型」,它應該有像名稱,地址和phoneno形式的數據? – kroiz

7

我會建議你有兩個按鈕,然後根據被點擊了哪個按鈕,你可以設置窗體上的動作:

剃刀

$(function(){ 
    $("#btn-prev").click(function() { 
     $("#form").attr 
        (
         "action", 
         "@Url.Action("Action", "Controller", new {area="Area" })", 
        ).submit(); 
    }); 
    $("#btn-next").click(function() { 
     $("#form").attr 
        (
         "action", 
         "@Url.Action("Action", "Controller", new {area="Area" })", 
        ).submit(); 
    }); 
}); 

我使用jQuery這裏做這個,但我認爲你可以明白。

+0

你能否詳細介紹一下在控制器的動作。我應該有一個行動?如果是這樣,我如何區分上一個和下一個?還有什麼是動作網址?謝謝。 – kroiz

+0

該操作是表單發佈到的url。如果您即時修改該表單,則可以更改表單要發佈到的位置。你只需要有一個'Ajax.BeginForm'。它會在客戶端上輸出'form'標籤,你可以通過JavaScript進行更改。 – Sam

+1

@kroiz檢查更新。 –

1

我有同樣的要求/問題,在這裏嘗試這兩種解決方案,他們都爲我工作。我喜歡這個想法,通過點擊設置動作通過jquery,所以我可以保持我的行動分開,以便他們可以被其他視圖使用。但是我發現當我在調試的時候這樣做,它會發布TWICE和 OnSuccess和OnFailure被觸發。它只發生在調試時。選擇時請記住這一點。

+0

只是說明:它正常發生,而不僅僅是在調試時。每次執行操作時,我都有一個記錄時間戳的txt文件。調試與否,當我通過jquery設置表單的動作時,我寫了兩行代碼......但是當動作被硬編碼時,它只寫了一行代碼。直到我可以找出原因,這可能不是一個安全的方法 – citronsmurf

+0

另外...我發現了很多關於Ajax.Beginform的文章。他們都必須與人們偶然添加不顯眼的JavaScript JS文件兩次(一次在部分視圖中,一次在主佈局中)。這不適合我。所以我不知道爲什麼會發生這種情況。我將繼續研究它,因爲我真的想要jQuery方法的工作 – citronsmurf

相關問題