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)

      

      

      

      

      

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/wanghaibin/p/6000396.html
Copyright © 2011-2022 走看看