ASP.NET MVC是否吞下提交值?

Jam*_*ght 3 c# asp.net-mvc

我在ASP.NET MVC(v1)中有一个表单,它有2个输入按钮.每个提交按钮必须包含在这个单一的表单中,我需要知道用户按下了哪一个.

我知道检查FormCollection值的技巧,它将根据按下的按钮返回.例如,如果我有和用户单击Button2,我应该可以说Request.Form ["Button2"]!= null并且将评估为true,在这种情况下,我知道用户单击了该按钮.

但是,这对我不起作用.我的所有按钮的值都为null,因为它们中的不包含在Request.Form值中.ASP.NET MVC中是否存在吞下这些值的错误?

这是我的表单代码:

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

    <% Html.RenderPartial( "EditAreaControl", Model ); %>

    <div class="form-layout-command-container">
        <div class="form-layout-command-area-alpha"><button type="submit" name="submit1" value="Save">Save</button></div>
        <div class="form-layout-command-area-alpha"><button type="submit" name="submit2" value="SaveAndCopy">Save and Create Copy</button></div>
        <div class="form-layout-command-area-beta"><%= Html.ActionLink("Cancel", "list") %></div>
    </div>

<% } %>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器代码:

[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Add(FormCollection values )
{
   if (values["submit1"] != null)
        // always false
   if (values["submit2"] != null)
        // always false as well
}
Run Code Online (Sandbox Code Playgroud)

Bru*_*eis 6

来自w3schools:

重要提示:如果您在HTML表单中使用button元素,则不同的浏览器将提交不同的值.Internet Explorer将在和标签之间提交文本,而其他浏览器将提交value属性的内容.使用input元素在HTML表单中创建按钮.

看来这不是标准化的.你应该坚持下去

<input type="submit" name="submitButton" value="Save" />
<input type="submit" name="submitButton" value="Cancel" />
Run Code Online (Sandbox Code Playgroud)