好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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 ,  读书笔记

标签:  MVC3 ,  Razor ,  视图 ,  Html

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于ASP.NET MVC3 读书笔记三(Html辅助方法下)的详细内容...

  阅读:49次