2009-11-25 61 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

要回答你的问题,没有办法检查哪个按钮导致表单提交而没有给它一个唯一的名称。