Asp.Net MVC RC2中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="MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题_html"之类</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>();

MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题_html        

ViewData["Citys"] = _items;


View部分:

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