2010-11-05 54 views
0

我有這樣的事情在我看來如何:按鈕的.NET MVC2陣列

<%@ 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" /> 

謝謝您的幫助

回答

0

首先,你需要做的是DIV表單字段包含您的輸入。

其次,爲了增加我的價值,你需要讓它說我++而不是++ 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() %>" /> 
<% } %> 

希望這會有所幫助!

+0

謝謝, 爲 「ADD_BUTTON [<%:i.ToString()%>」),那結束 「]」? – NHibernateNoobulator 2010-11-05 22:15:19

+0

]」/>像這樣? – NHibernateNoobulator 2010-11-05 22:16:41

+0

那是那裏。名稱=「按鈕[<%:i.ToString()%>]」你沒有正確引用我。 請勿在方括號和<%之間放置空格,因爲這些空格將出現在您的屬性中。另外不要忘記整型變量的.ToString()。使用<%時:它總是期望表達式返回要顯示的值。 – Chev 2010-11-05 22:18:33

0

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

除第一個點擊以外的任何按鈕都會轉到FormCollection。

所以,如果我點擊ADD_BUTTON [1],它會真正去收集[ 「ADD_BUTTON [1]」]

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> 
+0

我開始一個新的項目,只有循環和按鈕在那裏,仍然沒有運氣:(除了第一個去除FormCollection [「add_Button [1]」),[「add_Button [2]」]等所有按鈕。參數IList add_Button或string [] add_Button只能在點擊時獲得add_Button [0] – NHibernateNoobulator 2010-11-06 19:18:58