天天看点

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

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

小试了一下,有二个简单的解决办法:

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

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

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

Code

/// <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设置初始选中值的问题

"之类</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设置初始选中值的问题

ViewData["Citys"] = _items;

View部分:

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