2011-10-15 66 views
1

我在我的asp.net mvc 3頁面上有多個動態按鈕。在asp.net mvc 3中處理按鈕點擊的最佳方法是什麼?在asp.net中沒有事件處理,那麼最好的做法是什麼?在asp.net MVC 3中的多個按鈕點擊3

+0

http://www.dotnetcurry.com/ShowArticle.aspx?ID=724 –

回答

1

如果按鈕不需要相同的表單數據,那麼您可以使用不同的操作方法創建兩個表單。這是最簡單的解決方案。

如果你需要使用相同的表單數據,那麼有很多方法,包括Darin和tvanfosson的方法。還有一種基於屬性的方法,它將根據點擊哪個按鈕來選擇正確的操作方法。

http://www.dotnetcurry.com/ShowArticle.aspx?ID=724

2

您可以通過訂閱他們的點擊事件來處理使用JavaScript的按鈕點擊。例如使用jQuery你可以給這些按鈕的類,然後:

$(function() { 
    $('.someClass').click(function() { 
     // a button was clicked, this will point to the actual button 
    }); 
}); 

,或者那些提交表單的按鈕,你可以給他們相同的名稱和不同的值,然後在服務器上測試的價值名稱參數。它的值等於點擊的按鈕。

讓我們假設例如您有多個下列形式提交按鈕:

@using (Html.BeginForm()) 
{ 
    ... some input fields 

    <button type="submit" name="Button" value="delete">Delete data</button> 
    <button type="submit" name="Button" value="save">Save data</button> 
} 

現在你張貼到你可以決定哪個按鈕被點擊控制器動作中:

[HttpPost] 
public ActionResult Index(MyViewModel model) 
{ 
    var button = Request["button"]; 
    if (button == "save") 
    { 
     // the save button was clicked 
    } 
    else if (button == "delete") 
    { 
     // the delete button was clicked 
    } 

    ... 
} 
+0

這是很好的方式,但對於狀態管理。我的意思是,如果我在第一個按鈕點擊設置一些值的視圖狀態,我handeling第一個按鈕點擊部分視圖,然後如何獲得視圖數據的價值從第一個按鈕點擊赤入第二等等 –

+0

@RedSwan,以及,您可以在表單內使用輸入字段,將該值發送給控制器。 –

1

取決於按鈕的功能。如果它們是邏輯上獨立的操作,則可以在服務器端將每個回發分別執行一次單獨的操作。這通常也起作用,它們是同一動作的變體,保存與取消,例如,保存回發表單和取消重定向到您之前的URL(例如,回到編輯細節)。如果這些按鈕表示將發佈回相同操作的不同數據,則可以爲它們提供不同的值。如果按鈕已命名,則值將與表格的其餘部分一起回傳(假設它們已包含在表單中)。如果從AJAX發回,您可能需要顯式序列化按鈕值和表單。保存的

例/取消

@using (Html.BeginForm()) 
{ 
    //... 
    <button type="submit" class="submit-button button">Save</button> 
    @Html.ActionLink("Cancel", "details", new { ID = Model.ID }, new { @class = "cancel-button button" }) 
} 

然後使用CSS,也許連同jQuery用戶界面樣式的按鈕。

<script type="text/javascript"> 
    $(function() { 
     $('.button').button(); 
     ... 
    }); 
</script>