我有一個模型(實體類)通訊。我將一份新聞通訊列表傳遞給一個視圖,並在每張新聞通訊的一個表格中顯示新聞通訊的列表。除了每個通訊行之外,還有一個複選框。我將通過選中複選框並單擊發送按鈕來選擇要發送的新聞快訊。ASP.Net MVC - 將查看中的選定數據傳遞給控制器(幫助!)
如何將選定的新聞快遞傳遞給控制器?
謝謝。
我有一個模型(實體類)通訊。我將一份新聞通訊列表傳遞給一個視圖,並在每張新聞通訊的一個表格中顯示新聞通訊的列表。除了每個通訊行之外,還有一個複選框。我將通過選中複選框並單擊發送按鈕來選擇要發送的新聞快訊。ASP.Net MVC - 將查看中的選定數據傳遞給控制器(幫助!)
如何將選定的新聞快遞傳遞給控制器?
謝謝。
在視圖:
<input type="checkbox" name="newsletterIds" value="<%=newsletter.Id%>"/>
在您的目標控制器中:
public ActionResult SendNewsletters(int[] newsletterIds)
{
... do something with the ids...
}
只需將一個名爲Selected的布爾值添加到您的實體類中,該實體類在傳回控制器時會告訴控制器在列表中選擇了哪些通訊。
如果你不想用客戶端元數據「污染」你的實體類,你可以繼承它並在你的派生類中添加所選的布爾值。
或者,您的模型可以簡單地包含一個單獨的列表,其中包含對所選簡報或某個唯一標識符的引用,以供日後從原始列表中選擇個別簡報。
做這樣的事情在你看來:
<%= Html.CheckBox("cbNewColors", true) %><label for="cbNewColors">New colors</label>
在你的控制器
,做這樣的事情:
bool bChecked = form["cbNewColors"].Contains("true");
你必須做一些手工的工作,因爲MVC增加了隱藏字段對於每個複選框,並依靠模型聯編程序處理來自表單提交(如果已選中該框)的值true,false
。
假設你有你的觀點提供唯一的ID,我提出以下建議:
手動創建的複選框(即不使用HTML輔助)具有相同的名稱
< INPUT TYPE = 「複選框」 名稱= 「通訊」 值= 「NL_ [ID]」 ID = 「NL_ [ID]」/> [名稱] < /標籤>
接受一個string[] newsletters
參數到動作即處理帖子。 (您可以需要接受一個字符串,然後把它分解的逗號,我不記得array newslettersArray = newsletters.Split(',');
;)
將字符串到通訊ID列表做這樣的事情:
變種。IDS = newsletters.Select(N => int.Parse(n.Substring(2))ToList();
這是否已經解決? – 2009-12-29 19:52:36