2009-09-09 204 views
1

我如何有2個按鈕和每個按鈕來執行不同的回發操作? 例如:2個按鈕在視圖中執行不同的操作在asp.net mvc

  1. 我想Button1以提交表單的 內容。
  2. 我希望button2 能夠顯示 數據庫中的某些數據,而不會在 表單中存儲什麼內容。

現在,由於即時通訊使用表單集合,這兩個按鈕似乎存儲的數據。如何區分按鈕?

謝謝

回答

2

您需要檢查表單集合中是否存在相關的Submit按鈕並執行相關操作。

例如,假設Button1的& Button2的,你只需要在控制器的操作方法一種形式

接受POST

public actionresult SomeMethod(FormCollection form) 
{ 
    if (form.AllKeys.Contains("Button1") 
    { 
    doSomething(); 
    } 
    else // assuming only two submit buttons 
    { 
    doSomethingElse(); 
    } 
} 

HTH,

1

按鈕不存儲任何東西。按鈕啓動HTTP POST請求。

現在,如果您希望這些POST命中不同的控制器操作,則需要將它們放入兩個不同的窗體並指定兩個不同的窗體URL。

<% BeginForm ("/action1"); %> 
    <input type="submit" value="Action1" /> 
<% EndForm(); 

<% BeginForm ("/action2"); %> 
    <input type="submit" value="Action2" /> 
<% EndForm(); 

然後,你需要兩個不同的控制器動作的路由(在Global.asax中)映射:

routes.MapRoute(
    "Action1", 
    "/action1", 
    new { controller = "Test", action = "PostAction1" }); 

routes.MapRoute(
    "Action2", 
    "/action2", 
    new { controller = "Test", action = "PostAction2" }); 

而且您的控制器是在那裏等着這些行動:

public class TestController : Controller 
{ 
    [AcceptVerbs (HttpVerbs.Post)] 
    public ActionResult PostAction1 (FormCollection form) 
    { 
     // Do something 
     return View(); 
    } 


    [AcceptVerbs (HttpVerbs.Post)] 
    public ActionResult PostAction2 (FormCollection form) 
    { 
     // Do something 
     return View(); 
    } 
} 

然後你決定自己想要在這些行爲上發生什麼,保存數據或做其他事情。

2

您可以將每個按鈕放在不同的表單中,並具有不同的提交操作。像這樣:

<% using (Html.BeginForm("/FirstAction")) {%> 
    <input type="submit" /> 
<% } %> 

<% using (Html.BeginForm("/SecondAction")) {%> 
    <input type="submit" /> 
<% } %> 
2

兩個形式的做法是好的只要表單不需要共享輸入字段(文本框等)即可。如果他們需要分享,或者按鈕要彼此相鄰放置(以使表單以某種方式重疊),那麼使用兩種表單就會開始分解。

此外,我不喜歡在控制器內調度,基於檢測哪個按鈕已被點擊從FormCollection。派發方法會產生一個間接層,使事情變得不那麼清晰:例如,您無法修飾您使用AcceptVerbs派發的方法。

取而代之,我們只需捕獲JavaScript onclick事件並設置表單的操作。

<% using (Html.BeginForm("Save", "Contact")) 
{ %> 
    <input type="submit" value="Save" /> 
    <input type="submit" value="Find Similar" onclick="this.form.action = rootDir + 'Contact/Find'" /> 
<% }%> 
相關問題