1

view.aspx に次の行があります。かみそりを使用していません。

 <p style="color:Red">
        <% Html.DropDownListFor(model => model.AllSundays, new SelectList(Model.AllSundays)); %>
  </p>

プログラムを実行してソースを表示すると、何も表示されません。私は自分のアクションで ViewModel を利用しています:

 var allSundaysInThisMonth = new SundaysInMonthViewModel
  {
    AllSundays = sundays.Select(x => new SelectListItem
    {
      Value = x.ToString("dd-MM-yyyy"),
      Text = x.ToString("dd-MM-yyyy"),
    })
  };

  var selectedSunday = new SundaysInMonthViewModel{
    SelectedSunday = thisMonthSundays.Where(x => x < now)
    .Last().ToString("dd-MM-yyyy")
  };

  return View(allSundaysInThisMonth);

ありがとう

4

1 に答える 1

5

応答に何かを出力する場合は、最後にコンマを使用<%=しないでください。そうしないと、応答にフラッシュされないサーバー側のコードのみを実行することになります。

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    new SelectList(Model.AllSundays)
) %>

またAllSundays、すでに であるように見えるので、それをビューIEnumerable<SelectListItem>の にフィードする必要はありませんSelectList:

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    Model.AllSundays
) %>

また (これは非常に重要です)、選択した値と使用可能な値の両方に同じプロパティを使用しないでください。現在、AllSundays2回使用しています。それは絶対に間違っています。DropDownList ヘルパーは、選択した値を保持するビュー モデルのスカラー プロパティを最初の引数として、選択した値を保持するIEnumerable<SelectListItem>プロパティを 2 番目の引数として期待します。

だからあなたが欲しいのは:

<%= Html.DropDownListFor(
    model => model.SelectedSunday, 
    Model.AllSundays
) %>
于 2012-08-15T11:16:23.470 に答える