0
<select name="BasicInfo.Month">
    <option value="na">Month</option>
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>

どこかからコピーしたこのコードがあります。ドロップダウン リスト MVC スタイルを作成する必要があるため、選択したものなどをマークできます。これを MVC が使用するものに変換するにはどうすればよいですか?

4

2 に答える 2

3

ビュー モデルでは、次のプロパティを追加できます。

public IEnumerable<SelectListItem> Months
{
    get 
    {
        return DateTimeFormatInfo
               .InvariantInfo
               .MonthNames
               .Select((month, index) => new SelectListItem
               {
                   Value = (index + 1).ToString(),
                   Text = month
               });
    }
}

そして、あなたの見解では、そのプロパティを指していMonthsます。

<%= Html.DropDownListFor(Model.Months) %>

このアプローチの利点は、アプリケーションの言語設定を変更すると、月の名前が翻訳されることです。

于 2012-10-07T17:22:08.393 に答える
1

最も単純な形式では:

@Html.DropDownListFor(m => m.BasicInfo.Month, new List<SelectListItem>
{
    new SelectListItem { Text = "Month", Value = "na" },
    new SelectListItem { Text = "January", Value = "1" },
    new SelectListItem { Text = "February", Value = "2" },
    new SelectListItem { Text = "March", Value = "3" },
    new SelectListItem { Text = "April", Value = "4" },
    new SelectListItem { Text = "May", Value = "5" },
    new SelectListItem { Text = "June", Value = "6" },
    new SelectListItem { Text = "July", Value = "7" },
    new SelectListItem { Text = "August", Value = "8" },
    new SelectListItem { Text = "September", Value = "9" },
    new SelectListItem { Text = "October", Value = "10" },
    new SelectListItem { Text = "November", Value = "11" },
    new SelectListItem { Text = "December", Value = "12" }
})

本当に必要な場合は、DateTime オブジェクトを使用してリストの作成を自動化できます。そうすれば、文化固有の月名も取得できます。

あなたのモデルは次のようになります。

public class MyModel
{
    public BasicInfoModel BasicInfo { get; set; }
}
public class BasicInfoModel
{
    public string Month { get; set; }
}
于 2012-10-07T17:16:52.427 に答える