2011-08-10 119 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

相关问题