如何:.NET MVC2按钮数组

时间:2010-11-05 22:01:38

标签: asp.net-mvc asp.net-mvc-2 button controller submit

我的视图中有类似的内容

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewMasterPage.Master"
    Inherits="System.Web.Mvc.ViewPage<MVC.ViewModels.EditViewModel>" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <%
        Html.EnableClientValidation();%>
    <%
        using (Html.BeginForm("Edit", "Edit", FormMethod.Post, new { @class = "myform" }))
        {%>
        <%for (int i = 0; i < Model.Activity.Count; ++i)
                            {%>
        <div class="editor-field">
        <%:Html.DropDownListFor(x => x.Activity[i].SelectedActivity, Model.SelectListActivity)%>
         <input class="button" type="submit" value="<%:i%>" name="add_Button[<%:i%>]"/>
        </div>

    <%}
}
    %>
</asp:Content>

控制器:

 [HttpPost, Authorize]
        public ActionResult Edit(string[] add_Button,  FormCollection collection)

当我进入我的控制器时,只捕获了索引[0]上的按钮,为什么会这样? ICollection<string> add_Button and string[] add_Button都不适合我。

换句话说,你如何发送这样的按钮数组:

   <input class="button" type="submit" value="Add" name="add_Button[0]" id="Submit3" />
   <input class="button" type="submit" value="Add" name="add_Button[1]" id="Submit4" />
   <input class="button" type="submit" value="Add" name="add_Button[2]" id="Submit5" />
   <input class="button" type="submit" value="Add" name="add_Button[3]" id="Submit6" />
   <input class="button" type="submit" value="Add" name="add_Button[4]" id="Submit7" />
   <input class="button" type="submit" value="Add" name="add_Button[5]" id="Submit8" />

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

首先,您需要将DIV设为FORM字段以包含您的输入。

其次,要增加i的值,你需要让它说i ++而不是++ i。

最后,如果您只想重复按钮,则需要在按钮周围移动for循环,而不是在div和下拉列表周围。

<% for (int i= 0; i < Model.Activity.Count; i++)
{ %>
<input class="button" type="submit" value="Add" name="button[<%: i.ToString() %>]" id="Submit<%: i.ToString() %>" />
<% } %>

希望这有帮助!

答案 1 :(得分:0)

好的....我发现了一些有趣的东西。 我的控制器 public ActionResult Edit(String[] add_Button, FormCollection collection)

除了第一个按钮之外单击的任何按钮都转到FormCollection。

所以如果我点击add_Button [1],它实际上会转到集合[“add_Button [1]”]

答案 2 :(得分:0)

正如所承诺的,这是我对您更新的来源的回答。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewMasterPage.Master"
    Inherits="System.Web.Mvc.ViewPage<MVC.ViewModels.EditViewModel>" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <%
        Html.EnableClientValidation();%>

        <% for (int i = 0; i < Model.Activity.Count; i++)
        {%>

        <% using (Html.BeginForm("Edit", "Edit", FormMethod.Post, new { @class = "myform" }))
        {%>
        <div class="editor-field">
        <%:Html.DropDownListFor(x => x.Activity[i].SelectedActivity, Model.SelectListActivity)%>
         <input class="button" type="submit" value="<%: i.ToString() %>" name="add_Button[<%: i.ToString() %>]"/>
        </div>

    <%}
}
    %>
</asp:Content>