视图帮助类

HtmlHelper

HtmlHelper给我们封装了大量的常用方法,使我们的开发更具高效。那么其中有哪里是我们常用的呢?

BingForm 生成form表单

上图简单的使用了Html.BeginForm,就生成了一个表单。当然只会使用是不够的,还需要知道一下原理。下面进入BegForm的源码

可以发现,先是调用GenerateUrl方法,再调用FormHelper方法。

进到了FormHelper方法,可以看到这里进行构建标签,以及标签的一些属性,BegForm有很多的重载,可以对生成的表单进行更细粒度化的控制。相信大家从参数名上就可以看出端倪

TextBox 与TextBoxFor 生成文本框

上图使用TextBox简单的生成了一个name为name,class为col-md2 的文本框,当然还可以使用TextboxFor根据model的字段去生成标签

和上面的生成form表单一样,也是在方法里拿到参数去构建标签返回到页面,可以看到返回的是MvcHtmlString,并不是String。这种类型可以被识别成原生的html代码,而不会被转义

使用TextBoxFor根据model生成一下文本框,下图我根据name生成了一个文本框,并且自定义id值为myName。根据生成的标签来看,还是很符合我们的要求的。而且非常的简洁干净。

注: 对于input那些表单控件,都有相应的方法。比如PassWord、PassWordFor;RadioButton、RadioButtonFor等等,用法也都是大同小异。所以这里也就不多赘述了

Action与RenderAction

也许你会有这种需要,在当前视图嵌入我们的“用户控件”就像Index视图有Login一样,Login视图只做为“用户控件”在Index 中的。@Html.Action() 可以让我们轻松的实现

  • 使用action与RendenAction 需要在控制器中写一个action

上面在IndexController中写了一个Logion ation,然后在index视图中使用了@html.action(“login”)。

当然也可以使用RenderAction不同的是,Action有返回值 类型是MvcHtmlString。而RenderAction则是Void。所以使用RenderAction需要 @{html.RenderAction()}

两个方法的背后实现看了一下源码,似乎是一样的。action和 RenderAction都调用了ActionHelper就去。action调用后返回了StringWriter,而renderAction调用完之后方法就已经结束了

注:“用户控件”不应该让用户拼出Url访问的,这个我可以在Action上加上标签 [ChildActionOnly]

Partial与RenderPartial

与action看起来作用一致,“用户控件”个人理解为视图中的分布视图。

  • 使用方法也是@html.Partial(),RenderPartial也与RnederAction调用方式一致

可能他们看起来如此一致,但是有一点却大大不同。使用Action要在控制器中写一个方法,而Partial而不用。直接写视图名即可。所以, 当 ”用户控件“ 需要提供参数或后台处理数据的时候使用Action与RenderAction,不需要的时候用Partial与RenderPartial。

当然,他们背后的实现方式是不同的。这里调用的是FindPartialView方法,和我们的View()类似。View是调用是FindView方法

MVC5-6 帮助类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. 转 Autofac怎么依赖注入ASP.NET MVC5类的静态方法

    之前我有介绍过怎么在ASP.NET mvc5中实现的Controller的依赖注入.一般是通过Contrller的构造函数的参数或者属性来注入,但是这有一个共同点就是调用这个类的方法一般都是实例方法, ...

  3. 用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类

    前言 年底工作比较忙,年度总结还没写,项目要上线,回老家过年各种准备.尤其是给长辈给侄子侄女准备礼物头都大了. 原来想年前先出一版能用的,我看有点悬了,尽量先把大体功能弄出来,扔掉一些,保证能考试,然 ...

  4. 自建mvc5项目里几个类图

    AccoutController.cs AccountViewModels.cs IdentityModel.cs

  5. MVC5+EF6+MYSQl,使用codeFirst的数据迁移

    之前本人在用MVC4+EF5+MYSQL搭建自己的博客.地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在glob ...

  6. MVC5 网站开发之九 网站设置

    网站配置一般用来保存网站的一些设置,写在配置文件中比写在数据库中要合适一下,因为配置文件本身带有缓存,随网站启动读入缓存中,速度更快,而保存在数据库中要单独为一条记录创建一个表,结构不够清晰,而且读写 ...

  7. VS2013中的MVC5模板部署到mono上的艰辛历程

    部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...

  8. MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

    在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细 ...

  9. 在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web ...

  10. MVC5 网站开发之三 数据存储层功能实现

    数据存储层在项目Ninesky.DataLibrary中实现,整个项目只有一个类Repository.   目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...

随机推荐

  1. easyui layout 折叠后显示标题

    (function($){ var buttonDir = {north:'down',south:'up',east:'left',west:'right'}; $.extend($.fn.layo ...

  2. flex布局模式简单概述

    CSS3中新增一种弹性布局模型:flexbox.网上关于flex的介绍很多,这里介绍下常用的几个属性.弹性布局的特点是非常灵活.可根据剩余的宽高,灵活布局. 先用图片说明flex具有哪些属性.(网上盗 ...

  3. idea配置。

    1.project Structure — 修改project(1.name,sdk,level(6-@Override in interface)) 修改modules(点击web,加上source ...

  4. 完整的社交app源码android+laravel

    等想到写点什么的时候再写吧,其他看代码. https://github.com/huijimuhe/monolog-android https://github.com/huijimuhe/monol ...

  5. 我做PHP,但是我要批判下整天唱衰.NET的淫

    笔者每天都能看到月经贴-".NET已死"!!! 笔者之前一直在CSDN上面写博客,泡论坛,但是有约莫一年来着了发现CSDN上面的博客都没啥更新,CSDN首页推荐的一些文章也没啥新意 ...

  6. 使用docker发布spring cloud应用

    本文涉及到的项目: cloud-simple-docker:一个简单的spring boot应用 Docker是一种虚拟机技术,准确的说是在linux虚拟机技术LXC基础上又封装了一层,可以看成是基于 ...

  7. .Net下一个类型转换神器

    引言 类型转换经常遇到,最常用的应该是string类型转换为其它基元类型,常见于http参数类型转换.Convert静态类的Convert.ChangeType()方法可以把实现IConvertibl ...

  8. ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...

  9. 移动OA,致我们终将逝去的青春(程序员版)[转]

    移动OA和致青春有什么关系,难道说赵薇也来做手机应用了?为什么不行,当年小燕子代言的打印机可是红火的很,现在再秀一把时尚手机办公也未必不可啊.言归正转,本文还是以点代面阐述移动OA开发过程,但是,它的 ...

  10. mybatis自动生成代码

    使用maven集成mybatis-generator插件生成Mybatis的实体类,DAO接口和Map映射文件 本例中,使用的是mysql数据库 前提:表已经建好  mybatis框架的jar包,数据 ...