2011-08-10 12 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.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