zoukankan      html  css  js  c++  java
  • ASP.NET MVC HtmlHelper 类的扩展方法

    再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper。微软官方地址是:https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html(v=vs.118).aspx 

    在此,整理了一份对应的表格,以便快速记忆。

    HTML <select> 标签(下拉列表)

    		<select name="selectTag">
    			<optgroup label="水果">
    				<option value="1">苹果</option>
    				<option value="2" selected="selected">香蕉</option>
    				<option value="3">梨</option>
    			</optgroup>
    			<optgroup label="蔬菜">
    				<option value="4" disabled="disabled">小白菜</option>
    				<option value="5">菠菜</option>
    				<option value="6">青菜</option>
    			</optgroup>
    			<optgroup label="衣服" disabled="false">
    				<option value="7">上衣</option>
    				<option value="8">裤子</option>
    				<option value="9">内衣</option>
    			</optgroup>
    		</select>
    

    显示效果:

    使用思路:

    1、首先要建立数据源,也就是下拉列表里的数据

    2、数据源里的数据项类型是SelectListItem类型,它有5个属性,分别是
    string类型的 Text 要显示的文本,
    string类型的 Value 文本对于的值,
    bool类型的 Selected 代表是否被选中了,单选<select>标签只能有一个true,默认为false,可以不些,
    bool类型的 Disabled 表示选择项是否可用,
    最后一个类型复杂些,SelectListGroup 类型的 Group ,表示选项的分组。SelectListGroup类型有2个参数,一个是string类型的Name,也就是分组的名称,第二个属性为bool类型的Disabled 表示是否可用,如果不可用,那么其下的项都不能用,显示为灰色的。

    3、然后建立一个列表,类型为List<SelectListItem>,然后把从数据库或其他地方来的数据填充到这个列表及列表项中。

    4、把列表实例传递到view页面

    5、在页面的@Html.DropDownList()中显示出来

    public SelectList MyList()
    {
       var group1 = new SelectListGroup() { Name = "Group 1" };
       var group2 = new SelectListGroup() { Name = "Group 2" };
    
       var items = new List<SelectListItem>();
    
       items.Add(new SelectListItem() { Value = "1", Text = "Item 1", Group = group1 });
       items.Add(new SelectListItem() { Value = "2", Text = "Item 2", Group = group2 });
    
       return new SelectList(items, "Value", "Text");
    }
    有Group示例1
    public ActionResult Index()
            {
                
                ViewBag.Items = GetSelectItemListSource();
    
                return View();
            }
    
            [NonAction]
            public IList<SelectListItem> GetSelectItemListSource()
            {
                //创建分组
    
                var gruop1 = new SelectListGroup() {Name = "Group 1"};
                var gruop2 = new SelectListGroup() {Name = "Group 2", Disabled = true};
                var gruop3 = new SelectListGroup() {Name = "Group 3"};
    
                //创建项
                var selectItems = new List<SelectListItem>()
                {
                    new SelectListItem() {Value = "1", Text = "Item 1", Selected = true, Group = gruop1},
                    new SelectListItem() {Value = "2", Text = "Item 2", Group = gruop2, Disabled = true},
                    new SelectListItem() {Value = "3", Text = "Item 3", Group = gruop3},
                };
                return selectItems;
            }
    有Group示例2

    View页面:@Html.DropDownList("Items")

    显示效果:

     

    SelectExtensions 类:表示支持在列表中进行选择
    https://msdn.microsoft.com/zh-cn/library/system.web.mvc.html.selectextensions(v=vs.118).aspx

     在@Html.DropDownList() 文本上按F12查看源码:

    DropDownList(HtmlHelper, String)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>)
    DropDownList(HtmlHelper, String, String)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, IDictionary<String, Object>)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String, IDictionary<String, Object>)
    DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, String, Object)
    -------------------
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>)
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, IDictionary<String, Object>)
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, Object)
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String)
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String, IDictionary<String, Object>)
    DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, String, Object)


      


    详解DropDownList(String)

    1、首先在Action方法里构建需要的数据,数据类型为

            public ActionResult Index()
            {
                var items = new List<SelectListItem>()
                {
                    new SelectListItem() {Text = "苹果", Value = "1", Selected = false},
                    new SelectListItem() {Text = "香蕉", Value = "2", Selected = true},
                    new SelectListItem() {Text = "菠萝", Value = "2", Selected = false}
                };
                ViewBag.Items = items;
    
                return View();
            }
    
    View

    @Html.DropDownList("Items")

    显示效果:第二项被默认选中

    生成的HTML源码:

    <select id="Items" name="Items">
        <option value="1">苹果</option>
        <option value="2" selected="selected">香蕉</option>
        <option value="2">菠萝</option>
    </select>
    

    小结:

    比较奇怪,为什么就这么神奇的绑定了呢?求解释,我也不知道为什么?!

    一个String类型参数的方法字符串的名字要与后台传来的 SelectListItem 类型的参数要一致,即Items,大小写不区分。

    DropDownList 方法将呈现一个元素,该元素使用户能够从下拉列表中选择一个项。 列表中的每个项是一个 SelectListItem 对象。
    调用 DropDownList 方法与使用 select 元素之间的区别是,DropDownList 方法旨在便于绑定到视图数据或模型数据。


    2个参数的:DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>) 

    第一个参数String表示为<select>标签的name和id,第二个为下拉列表项

    3个字符串参数的方法:DropDownList(String, String) 

    View:@Html.DropDownList("items","-请选中-")

    显示效果:

    HTML源码:

    <select id="items" name="items">
        <option value="">-请选中-</option>
        <option value="1">苹果</option>
        <option value="2" selected="selected">香蕉</option>
        <option value="2">菠萝</option>
    </select>
    

    4、3个参数的:DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, IDictionary<String, Object>)

    name 和selectList参数就不说了,和上面的一样,第3个参数是泛型的字典接口类型,  可以为标签添加属性(特性)

    View:@Html.DropDownList("Items", ViewBag.Items as SelectList, new { @style = "280px;", size = "20", disabled = "disabled" })

    显示效果:

    HTML源码:

    <select disabled="disabled" id="Items" name="Items" size="20" style="280px;">
        <option value="1">苹果</option>
        <option selected="selected" value="2">香蕉</option>
        <option value="2">菠萝</option>
    </select>
    

    5、DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)

      

      

      

      

      

  • 相关阅读:
    hdu 1301 prime算法
    hdu 4763 kmp算法
    linux上安装程序出现的问题汇总
    linux之下载工具wget
    python之os模块
    管道和xargs的区别
    linux下查找文件或目录(which,whereis,locate,find)
    blast+学习之search tools
    linux的文件,目录操作命令(mv,rm,cp)
    PHPCMS V9 简单的二次开发
  • 原文地址:https://www.cnblogs.com/wanghaibin/p/6000396.html
Copyright © 2011-2022 走看看