Chr*_*Kee 32 c# asp.net-mvc c#-3.0
这种方法看起来很愚蠢而且有点沉重; 有没有更好的方法来创建相同的东西(它的MVC视图下拉列表)
private List<KeyValuePair<int, string>> getMonthListDD
{
get
{
var dDur = new List<KeyValuePair<int, string>>();
dDur.Add(new KeyValuePair<int, string>(1, "January"));
dDur.Add(new KeyValuePair<int, string>(2, "Febuary"));
dDur.Add(new KeyValuePair<int, string>(3, "March"));
dDur.Add(new KeyValuePair<int, string>(4, "April"));
dDur.Add(new KeyValuePair<int, string>(5, "May"));
dDur.Add(new KeyValuePair<int, string>(6, "June"));
dDur.Add(new KeyValuePair<int, string>(7, "July"));
dDur.Add(new KeyValuePair<int, string>(8, "August"));
dDur.Add(new KeyValuePair<int, string>(9, "September"));
dDur.Add(new KeyValuePair<int, string>(10, "October"));
dDur.Add(new KeyValuePair<int, string>(11, "November"));
dDur.Add(new KeyValuePair<int, string>(12, "December"));
return dDur;
}
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 68
在您的视图模型中,您可以拥有一个Months
属性:
public IEnumerable<SelectListItem> Months
{
get
{
return DateTimeFormatInfo
.InvariantInfo
.MonthNames
.Select((monthName, index) => new SelectListItem
{
Value = (index + 1).ToString(),
Text = monthName
});
}
}
Run Code Online (Sandbox Code Playgroud)
可以直接绑定到DropDownListFor
:
<%= Html.DropDownListFor(x => x.SelectedMonth, Model.Months) %>
Run Code Online (Sandbox Code Playgroud)
基于darins简单而优雅的回复,我想我会分享我看到这个结果后重构的小辅助方法:
public static string ComboDaysOfWeek(this HtmlHelper helper, string id, string selectedValue)
{
var newitems = DateTimeFormatInfo
.InvariantInfo
.DayNames
.Select((dayName, index) => new SelectListItem
{
Value = (index + 1).ToString(),
Text = dayName,
Selected = (selectedValue == (index + 1).ToString())
});
var result = helper.DropDownList(id, newitems).ToHtmlString();
return result;
}
Run Code Online (Sandbox Code Playgroud)
用法:
<%= Html.ComboDaysOfWeek("ActivityStartDay", Model.ActivityStartDay)%>
Run Code Online (Sandbox Code Playgroud)
[编辑] - 这是在MVC2中,因此.ToHtmlString()被添加到helper.DropDownList()方法中.
简单就是黄金,所以在你的视图中:
<select id="month">
@for (Int16 i = 0; i < 12; i++)
{
<option value="@i">@DateTimeFormatInfo.InvariantInfo.MonthNames[i]</option>
}
</select>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28103 次 |
最近记录: |