2011-08-10 70 views
2

我想創建一個簡單的報告頁面,其中包含可用報告的名稱的靜態數量的下拉列表,並將它們添加到生成比較報告的報告集合。ASP.NET MVC3 Html.DropDownListFor()

這裏是我的ViewModel

public class DealSummaryComparisonViewModel 
{ 
    public ICollection<DealSummary> AvailableDealSummaries { get; set; } 
    public ICollection<int> SelectedDealSummaries { get; set; } 
} 

這裏是我的看法

@model FRSDashboard.Web.Models.DealSummaryComparisonViewModel 

@{ 
    ViewBag.Title = "FRS Dashboard :: Deal Summary Comparison Report"; 
    var dealSummaryList = new SelectList(Model.AvailableDealSummaries, 
              "DealSummaryId", "FileName"); 
} 

<h2>Deal Summary Comparison Report</h2> 

<p>Please select at least two files to compare:</p> 

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) { 
    for (int i = 0; i <= 4; i++) { 
     <div>File @i+1: @Html.DropDownListFor(m => m.SelectedDealSummaries, 
               dealSummaryList)</div> 
    } 

<div><input type="submit" name="download" id="download" value="Download To Excel" /></div> 
} 

這適用於填充下拉列表,但我不知道該如何填寫SelectedDealSummaries收集或刪除所選從列表中處理摘要(與使用WebForms做什麼類似)。

此外,我將如何添加一個項目像「選擇交易摘要...」列表?

UPDATE:

我已經修改我的代碼使用索引和調用javascript函數..但我堅持在JavaScript中做什麼。

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) { 
    for (int i = 0; i <= 4; i++) { 
     <div> 
      File @(i + 1): 
      @Html.DropDownListFor(m => m.SelectedDealSummaries[i], dealSummaryList, 
       new {onchange = "updateAvailable()"}) 
     </div> 
    } 
} 

<script type="text/javascript"> 

    function updateAvailable() { 
      alert("updating"); 
    } 

</script> 

回答

1

您需要在您的收藏使用索引 - > M => m.SelectedDealSummaries [I]

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) { 
    for (int i = 0; i <= 4; i++) { 
     <div>File @i+1: @Html.DropDownListFor(m => m.SelectedDealSummaries[i], 
               dealSummaryList)</div> 
    } 
+0

謝謝,我已經改變了我的代碼來做到這一點,它的偉大工程。我還添加了一個調用javascript函數來更新列表,但我堅持如何修改列表中的對象。 – shuniar

相關問題