2009-11-25 66 views
0

有沒有什麼辦法來檢查哪個按鈕是在控制器動作中回發的。 我的問題是我使用兩個沒有名稱屬性的按鈕。 如何檢查已單擊的按鈕時,按鈕沒有名稱屬性 請指點MVC asp.net多個按鈕沒有名字

編輯:由於我使用的內部框架在創建按鈕控件,我不能給name屬性,他們沒有名字屬性。 所以有沒有其他的選擇。

我知道有一個辦法把這些按鈕在不同形式的標籤,但我想看看不同的感謝

+1

爲什麼你不能給你的按鈕一個名稱屬性? – Rippo 2009-11-25 20:08:56

回答

0

選項,如果你可以給你的按鈕的名稱屬性,你可以簡單地做..

<input ... name="MyBtn" .../> 

If (Request.Form["MyBtn"] != null) ... 
0

MVC會爲您檢查。提交按鈕連接到與視圖具有相同名稱的操作。

<% using (Html.BeginForm()) {%> 

    <fieldset> 
     <legend>Fields</legend> 
     <p> 
      <label for="Id">Id:</label> 
      <%= Html.TextBox("Id") %> 
      <%= Html.ValidationMessage("Id", "*") %> 
     </p> 
     <p> 
      <label for="Thema">Thema:</label> 
      <%= Html.TextBox("Thema") %> 
      <%= Html.ValidationMessage("Thema", "*") %> 
     </p> 
     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 

<% } %> 

在您使用控制器HttpVerbs對於GET和郵政

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Add() 
     { 
      return View(); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Add(ThemaWebSites thema) 
     { 
      return View(thema); 
     } 
0

您可以使用ID屬性,如果你不希望使用一個名稱,然後使用「值」屬性:

 
<button type="submit" name="action" value="OK" /> 
<button type="submit" name="action" value="Cancel" /> 

你需要一個名字,否則將無法在Request.FormFormCollection出現了,你將無法訪問該值。

編輯:如果你真的不能使用的名稱或ID屬性,你可能會被迫使每個按鈕設置在其onclick事件的隱藏字段的值,使用一些JavaScript弄虛作假......

+0

感謝您的回覆,但我不能給名稱屬性 – batwadi 2009-11-25 20:22:12

+0

我有點好奇,知道爲什麼不?有什麼限制? – 2009-11-25 20:33:58

1

要回答你的問題,沒有辦法檢查哪個按鈕導致表單提交而沒有給它一個唯一的名稱。