• ASP.NET MVC3 读书笔记三(Html辅助方法下)


    接上次未完待续【http://www.cnblogs.com/RegicideGod/archive/2013/01/22/2872305.html

    8、  Html.Hidden()

    Hidden就是生成隐藏文本域的方法;比如:

    @Html.Hidden("id","1")

    就会生成一个隐藏文本域

    <input id="guid" name="guid" type="hidden" value="1" />

    MVC3中如果使用强类型隐藏文本域的作用就很大,比如一个更新的强类型视图,一共有5个字段,你只更新3个字段,那么就需要把另外两个字段放在隐藏文本域中,否则的话,强类型提交到后台就就只会赋值页面绑定的3个字段,另外2个会丢失

    9、  Html.Password()

    这个比较简单,用法跟hidden一样,就是会生成一个password类型的input

    <input id="pass" name="pass" type="password" value="123456" />

    10、Html.RadioButton()

    RadioButton主要是生成一组来供用户选择,根据name来确定一组按钮;

    @Html.RadioButton("color", "red")<text>red</text>
    @Html.RadioButton("color", "blue",true)<text>blue</text>
    @Html.RadioButton("color", "green")<text>green</text>

    就会生成为:

    <input id="color" name="color" type="radio" value="red" /><text>red</text>
    <input checked="checked" id="color" name="color" type="radio" value="blue" /><text>blue</text>
    <input id="color" name="color" type="radio" value="green" /><text>green</text>

    11、Html.CheckBox()

    这个辅助方法比较特殊一点点,CheckBox生成元素会生成2个input元素;

    @Html.CheckBox("sel",true)

    生成的源代码为:

    <input checked="checked" id="sel" name="sel" type="checkbox" value="true" />
    <input name="sel" type="hidden" value="false" />

    一个checked一个hidden;

    它渲染两个输入元素的主要原因是,HTML规范中规定了浏览器只提交选中的复选框的值,在上面的例子中即使sel的checked没有被选中,也会被提交一个false到后台;

    12、  Html.ActionLink()、Html.RouteLink()

    看到这两个,好像没怎么想到跟html中的什么东西对应;从字面上理解就是生成link的东西;

    ActionLink主要是渲染一个指向另外一个控制器操作的超链接。

    比如:

    @Html.ActionLink("超链接","SelStudent","Home")

    就会生成为:

    <a href="/Home/SelStudent">超链接</a>

    在ActionLink中还重载了一些可以传递htmlAttributs的方法;

    RouteLink和ActionLink差不多,但是RouteLink可以接收路由名称而不接收控制器名称和操作名称。

    比如上面的ActionLink的例子可以转换为

    @Html.RouteLink("超链接",new {action="SelStudent"})

    当然,还有一个区别就是可以直接指定路由名称;

    要实现上面的actionlink效果还可以写成

    @Html.RouteLink("超链接","Default")

    Default是Global启动的时候注册的一个默认路由;这里如果只指定路由,默认的action会变成当前view的action;

    13、Html.Partial()、Html.RenderPartial()

    Partial用于将分部视图转换为字符串;

    新建一个action 为PartialTest 然后添加到分部视图,就会添加一个完全空白的页面(不包含一个标签),然后在需要使用的地方

    @Html.Partial("PartialTest")

    只需要指定分部视图名称即可;

    这样就会把PartialTest中的内容写入到@Html.Partial("PartialTest")所在的位置;有点类似于java中的include导入页面一样

    RenderPartial()跟Partial差不多的用途,只是返回的值不一样;Partial返回的是MvcHtmlString,而RenderPartial返回的是空,输入我们手动的在打印一遍;

    @{Html.RenderPartial("PartialTest");}

    这样就跟Partial效果一样了;但RenderPartial不是返回字符串,而是直接写入响应输出流,直接写入响应流性能上比Partial要好一点;

    14、Html.Action()、Html.RenderAction()

    Action和RenderAction差不多,一个是直接返回MvcHtmlString一个是返回空,把数据写到响应流;    

    借上面一个示例说明下分部视图如何不让直接访问,必须用html的辅助方法访问;

    [ChildActionOnly]
            public ActionResult PartialTest() {
                return PartialView();
            }

    这样就只允许通过Html的辅助方法【Action、RenderAction、Partial、RenderPartial】来进行访问了

    在14的示例中如果在ActionResult加上一个[ActionName(“MyTest”)],此时在访问PartialTest时就要用MyTest才能访问到了;

    小结:看了这么多系统提供的Html辅助方法,我们是不是该自己写一个自定义的Html辅助方法了?那么开始吧!

    新建一个静态类,里面定义一个自己写好的方法

    public static MvcHtmlString TestHtml(this HtmlHelper html) {
                MvcHtmlString mhs = new MvcHtmlString("<div style='100;height:100;background-color:red'></div>");
                return mhs;
            }

    方法返回一个MvcHtmlString(如果是想返回html不被转义的情况下,否则可以返回string),里面顶一个div,然后直接返回;

    在页面中使用时得先引入新建的这个类的命名空间;

    在顶部写上“@using MVC3Pro.Controllers”

    然后就可以像使用其他html辅助方法一样使用点操作了;(在点操作的时候,方法的下面有个向下的小箭头,是代表扩展方法,加this传递进去,将当前方法附加到this的上面为附加方法)

    @Html.TestHtml()
    
    --------------------------------------------
    /*结果*/
    <div style='100;height:100;background-color:red'></div>


    有些东西很基础,感觉没写出来的必要,但是既然写了就写完整吧;写写有时候会对不懂的会一下子融汇贯通,因为自己不懂,就不好意思胡扯过去,就会自己查资料弄清楚了才会写出来;

    下面会接着写下 数据注解与验证(几种自定义的注解验证);一个很强大的jquery解析json的模板使用;一些拾遗吧,主要是自己实际的项目中的案例和解决办法;

    路由机制感觉还理解的不够透彻;

    有时候工作累了,想休息下,但是看下一些牛人的东西发现还有很大差距,那么你还会停留下来去休息吗?

     
     
    分类: Web读书笔记
    标签: MVC3Razor视图Html
  • 相关阅读:
    Django ORM常用的函数以及修饰词
    通过gitlabAPI批量创建用户
    【BZOJ】ARC083 E
    【Atcoder】ARC083 D
    【BZOJ】1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
    【BZOJ】1593: [Usaco2008 Feb]Hotel 旅馆
    【BZOJ】5010: [Fjoi2017]矩阵填数
    【Atcoder】ARC082 E
    【BZOJ】5028: 小Z的加油店
    【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2881493.html
Copyright © 2020-2023  润新知