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

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

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

2.自己再写一个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="...."之类</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')\"") %>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

控制反转和依赖注入模式

一、控制反转和依赖注入两者搭配能像反射工厂那样解决程序集之间的耦合问题,下面将从Asp.Net经典的三层模式多方位的讲解控制反转和依赖注入模式,是如何帮我们进行...

196100
来自专栏博客园

使用异步操作时的注意要点(翻译)

在使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点

14320
来自专栏博客园

MongoDB Driver 简单的CURD

c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查.

73210
来自专栏c#开发者

Winform 的一个多线程绑定DataGrid数据源的例子

我们都知道简单的运用多线程的方法有 1/ Thread thread=new Thread(new StartThread(this.method))     ...

31990
来自专栏GreenLeaves

C#核编之System.Environment类

      在前面的例子中用来了Environment.GetCommandLineArgs()这个方法,这个方法就是获取用户的命令行输入,是Environme...

27170
来自专栏圣杰的专栏

Parallel线程安全问题

废话不多说,上代码: using System; using System.Collections.Generic; using System.Threadin...

33150
来自专栏魏琼东

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-使用UDA操纵SQL语句

       上一篇文章基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义中对本案例所涉及的数据表及部分数据,本文开始将从最基本的业务,数...

21950
来自专栏林德熙的博客

win10 uwp 异步转同步 使用的条件使用方法使用Task.Wait 时需要小心死锁

在本文开始,我必须告诉大家,这个方法可能立即死锁,所以使用的时候需要满足下面的条件

25720
来自专栏技术博客

C# XML与Json之间的相互转换

对于这转换其实很简单,其中最重要的就是先要引用类库。可以到官网进行下载引用http://json.codeplex.com。

64630
来自专栏大内老A

.NET的资源并不限于.resx文件,你可以采用任意存储形式[上篇]

为了构建一个轻量级的资源管理框架以满足简单的本地化(Localization)的需求,我试图直接对现有的Resource编程模型进行扩展。虽然最终没能满足我们的...

24970

扫码关注云+社区

领取腾讯云代金券