zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2881493.html
Copyright © 2011-2022 走看看