Как: .NET MVC2 массив кнопок - PullRequest
0 голосов
/ 06 ноября 2010

У меня есть что-то подобное в моем представлении

<%@ 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 голосов
/ 06 ноября 2010

Хорошо .... Я нашел что-то интересное. Мой контроллер public ActionResult Edit(String[] add_Button, FormCollection collection)

Любая кнопка, нажатая кроме первой, переходит в FormCollection.

Итак, если я нажму add_Button [1], он фактически перейдет в коллекцию ["add_Button [1]"]

0 голосов
/ 06 ноября 2010

Как и было обещано, вот мой ответ с вашим обновленным источником.

<%@ 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>
0 голосов
/ 06 ноября 2010

Во-первых, вам нужно сделать этот 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() %>" />
<% } %>

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...