zoukankan      html  css  js  c++  java
  • Mvc View

    一、返回html形式的字符的两种方法:
    1.使用MvcHtmlString()
    return new MvcHtmlString("<form>Enter your password:<input type=text><input type=submit value=\"Log In\"/></form>");
    2.使用Html.Raw(str)
    @Html.Raw(@"<form>Enter your password:<input type=text><input type=submit value='LogIn'/></form>")
    上面的两个方法都会输出一个表单。如果直接使用下面的方法的话,返回一个乱码
    return "<form>Enter your password:<input type=text><input type=submit value=\"Log In\"/></form>");
    二、html扩展标签
       1.定义一个HtmlExtension
            public static MvcHtmlString CreateUL(this HtmlHelper html, string[] listItems)
            {
                TagBuilder tag = new TagBuilder("ul");
                //方法
                //AddCssClass()             – 允许你向标签添加一个新的 class = "" 属性。
                //GenerateId()              - 允许你为标签添加一个id属性。这个方法自动替换id中的句点(默认情况下,句点将会替换为下划线)。
                //MergeAttribute()          - 允许你为标签添加属性。这个方法拥有大量的重载。
                //SetInnerText()            - 允许你设置标签内部的文本。内部文本自动进行了HTML编码。
                //ToString()                - 允许你呈现标签。你可以指定是否想要创建一个正常的标签、一个开始标签、一个结束标签,或者一个自闭合(self-closing)标签。
                
                //TagBuilder类拥有四个重要的属性:
                //Attributes                - 代表这个标签的所有属性。
                //IdAttributeDotReplacement - 代表GenerateId()方法所使用的,用来替代句点的字符(默认是下划线)。
                //InnerHTML                 - 代表着标签内部的内容。将一个字符串赋值给这个属性,并不会对这个字符进行HTML编码。
                //TagName                   - 代表着这个标签的名称。
    
                var builter = new TagBuilder("li");
                for(int i=0;i<listItems.Length;i++)
                {
                    //定义一个标签
                    TagBuilder itemTag = new TagBuilder("li");
                    //为标签添加类名
                    itemTag.AddCssClass("myclass");
                    //为标签添加属性名
                    itemTag.MergeAttribute("background","red");
                    //为标签自动生成id
                    itemTag.GenerateId("liID"+i.ToString());
                    itemTag.SetInnerText(listItems[i]);
                    tag.InnerHtml += itemTag.ToString();
                }
                return new  MvcHtmlString(tag.ToString());
            }
       2.引用命名空间和调用方法
      在引用命名空间的时间可以在当前View中添加,也可以添加到View文件夹里的web.config里面的。注意调用时是@Html.CreateUL(Model)

    三、常用的内置html helper
    1、TextBox 不解释直接上图
    <h2>html Helper练习</h2>
    <h3>TextBox练习</h3>
    <p>Html.TextBox("txtName")该方法的参数为文本框的名字name属性 @Html.TextBox("txtName")</p>
    <p>Html.TextBox("txtName",Model.Name)该方法的第一个参数为文本框的名字name属性 第二个参数为文本框的值 @Html.TextBox("txtName",Model.Name)</p>
    <p>Html.TextBoxFor(x=>x.Name)该方法的为模型模板的写法,有个For @Html.TextBoxFor(x=>x.Name) 该方法为推荐写法</p>
     多行文本 @Html.TextAreaFor(x => x.Name, 5, 20, new{}) 最后new为特性
    View Code
    2、select标签
    在select标签之前,认识一个SelectList类,下面给出参数最多的构造方法:
    SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue)
    第一个参数为一个IEnumerable类型的数据源,第二个参数为可以表示显示字段的值,第三个参数为显示的字段,第四个参数为默认选中的显示文本的值(不是文本)。如果第四个参数为空时
    ,则是一个为实现值为空的SelectList。我们尽管把这个东西看做是一个含有数据的一个对象。
    接着我们来看HtmlHelper的一个扩展方法——DropDownList,下面给出一个较为简单的方法:
    //其中name为select标签的name。optionLable为默认显示的一个文本
    public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, string optionLabel)
    {
        return htmlHelper.DropDownList(name, null, optionLabel, ((IDictionary<string, object>) null));
    }
    其调用了DropDownListHelper(htmlHelper, name, selectList, optionLabel, htmlAttributes)方法,最终根据name来获取ViewData里面的数据源,然后构造出了一个Select标签。
    下面给出一个例子来演示如何显示一个Select标签(多个对象时使用):
    在controller里面定义: ViewBag.PersonSelect = new SelectList(listP,"ID","Name");//表示没有指定选项的。
    在View中显示:@Html.DropDownList("PersonSelect", "请选择")
    注意:请不要把SelectList的显示值和@Html.DropDownList的显示值弄混了。
    下面演示一下只有一个对象时选择自己所属的选项(有一个对象是使用)。
    @model HtmlHelperDemo.Models.Person
    
    @{
        ViewBag.Title = "Index";
    }
    @Html.DropDownListFor(x => x.Gender, new SelectList(new[]{new { Text="",Value=true},new { Text="",Value=false}},"Value","Text",Model.Gender))
     
  • 相关阅读:
    CSP介绍、以及使用CryptoAPI枚举CSP并获取其属性
    Data Binding Guide——google官方文档翻译(下)
    ZOJ 3430 Detect the Virus 【AC自动机+解码】
    Visual Studio 中 Tab 转换为空格的设置
    梭子鱼:APT攻击是一盘更大的棋吗?
    APT攻击将向云计算平台聚焦
    【转】ubuntu修改IP地址和网关的方法
    程序员谈学习:我为什么要学习Linux?
    VS2010 快捷键
    Visual Assist X 10.6.1837完美破解版(带VS2010破解)
  • 原文地址:https://www.cnblogs.com/lzhp/p/3081646.html
Copyright © 2011-2022 走看看