【转】Asp.net MVC中关于HtmlHelper给DropDownList设置初始选中值的问题

Asp.Net MVC 中Helper提供的DropDownList好象并不太好用,特别想给下拉框设置初始选中值的时候(可能我还没找到正确的方法)

小试了一下,有二个简单的解决办法:
1.回到最原始的asp的办法,直接在view的循环中判断,具体代码就不写了,有过Asp/Php经验的一点就明白

2.自己再写一个DropDownList的重载版本,如下:


/// <summary>
/// 生成下拉列表
/// </summary>
/// <param name="helper"></param>
/// <param name="SelectListName">下拉列表的Name值</param>
/// <param name="SelectItems">数据源</param>
/// <param name="SelectedValue">选中值</param>
/// <param name="Attributes">附加属性值,比如onchange=""之类</param>
/// <returns></returns>
public static string DropDownList(this HtmlHelper helper, string SelectListName, IEnumerable<SelectListItem> SelectItems, string SelectedValue, string Attributes)
{
StringBuilder sb
= new StringBuilder();
sb.Append(
"<select");

if (SelectListName.Trim() != "")
{
sb.Append(
" name=\"" + SelectListName + "\"");
}
else
{
return "";
}

if (Attributes.Trim() != "")
{
sb.Append(
" " + Attributes.Trim());
}


sb.Append(
">");

foreach (SelectListItem item in SelectItems)
{
if (item.Value == SelectedValue)
{
sb.Append(
"<option value=\"" + item.Value + "\" selected=\"selected\">" + item.Text + "</option>");
}
else
{
sb.Append(
"<option value=\"" + item.Value + "\">" + item.Text + "</option>");
}
}

sb.Append(
"</select>");

return sb.ToString();

}

调用代码如下:

Action部分:

List<SelectListItem> _items = new List<SelectListItem>();

ViewData[
"Citys"] = _items;

View部分:
<%=Html.DropDownList("SelName", (IEnumerable<SelectListItem>)ViewData["Citys"],item.CityId.ToString(),"onchange=\"alert('Test')\"") %>

 

原文:http://www.cnblogs.com/yjmyzz/archive/2009/03/15/1412507.html

posted on 2011-05-13 12:49  凡夫·俗子  阅读(3127)  评论(1编辑  收藏  举报