asp.net mvc 3.0 知识点整理 ----- (4).HtmlHelper(Html 辅助方法)介绍

  在View视图中,Html的类型是System.Web.Mvc.HtmlHelper<T>, 所有的辅助方法都需要和ModelState交互。那么,ModelState是什么呢?它是模型绑定的附属品,并且存有模型绑定期间检测到的所有验证错误。以及用户提交用到来更新模型的原始值。
本篇博文,我们主要来介绍下一些常用的html辅助方法的主要作用和使用方法。

1. Html.BeginForm()和Ajax.BeginForm()

    Html.BeginForm():
  同于传统的表单提交,主要是生成表单的form值,如果表单时强类型视图,则在提交表单的时候,会自动将表单元素name名称与强类型视图中的类型实体的属性值相同的进行填充;同样在表单中,如果我们是强类型视图,则可以直接使用@Model.UserName将值输到指定位置。

一般和using{} 一起使用,否则要在form结尾添加Html.EndForm()

  method的方法分为: post 和 get: 提交后,变量可以在URL地址栏中获取。Get提交的时候,不会改变服务器的状态,客户端重复向服务器发送Get请求对服务器不会产生负面影响。

  post: 提交表单中的所有元素,Post请求会改变服务器的状态,因此客户端重复向服务器发送Post请求会对服务器产生影响。

使用方法: 

@using( Html.BeginForm( "方法名", "Controller名", FormMethod.提交的方法, new { target="_blank", @class = "表单的class名,方便定义样式", @id="表单的id名,方便获取表单元素"} )){  }

等同于:

<form action="Controller名/方法名" method ="提交的方法" class ="表单的class名" id="表单的id名" target="_blank"></form>

  Ajax.BeginForm():

  支持异步的表单提交,可以直接用MVC自带的Ajax.BeginForm就可以很容易的完成一个异步的表单提交动作。

@using(Ajax.BeginForm(
new AjaxOptions
{
  UpdateTartetId ="UserLogOnContainer",
  HttpMethod ="Post",
  OnSuccess=""
}
)) //提交到当前页面,提交方式是Post,异步更新模块Id为UserLogOnContainer的内容块

也可以提交到指定的controller的action上。

@using(Ajax.BeginForm("action","controller",null
new AjaxOptions
{
  UpdateTartetId ="UserLogOnContainer",
  HttpMethod ="Post",
  OnSuccess=""
}
)) //提交到当前指定的controller的action下,提交方式是Post,异步更新模块Id为UserLogOnContainer的内容块

2. Html.ValidationSummary()

主要用来

  (1). 显示后台 ModelState.IsValid 验证失败后的提示错误信息。

  (2). 或者是后台验证通过,但是某些逻辑验证没有通过。

比如:用户登录的时候,用户名或者密码错误。则可以手工添加错误信息

View页面:

@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")

Controller可以写:

ModelState.AddModelError("", "The user name or password provided is incorrect.");

3.Html.ValidationMessage()

功能和Html.ValidationSummary()类似,当ModelState字典中认证失败时,用来显示错误提示信息。

使用方法:

Controller中写:

ModelState.AddModelError("Title","What a terrible name!");

View中使用

@Html.ValidationMessage("Title")

4.Html.TextBox()、Html.TextArea()

主要是用来渲染 Html的textbox和textarea。

使用方法:

@Html.TextBox("title","textbox infomation") @Html.TextArea("textAreaTitle","textarea <br/> infomation")

等同于:

<input type="text" id="title" name="title">
       textbox information
 </input>
< textarea id="textAreaTitle" name="textAreaTitle">
       textarea &lt; br /&gt;  information
</textarea >

输出的内容是经过html编码的。

5.Html.Label()

Label辅助方法将返回一个<label/>元素

使用:Controller:

[DisplayName("Genre")]    //显示的内容
public int GenreId{get;set;}

View:

@Html.Label("GenreId")

等同于:

<label for="GenreId">Genre</label>

6.Html.DropDownList()、Html.ListBox()

两个辅助方法都返回select元素,DropDownList只允许多单选,而ListBox则允许多选
(通过渲染的标记中的multiple特性的值设置为multiple),  后台绑定数据源一般使用SelectListItem类型。

new SelectListItem
{
    Text = ”显示内容“,
    Value = "对应的值",
    Selected = bool值(是否选中)
}

7.Html.Editor()

用法:自定义Editor编辑器。
具体使用方法,可以参考这篇文章: http://hi.baidu.com/scorpio_jone/item/3080aefc8133c713a7298843

8.Html.Hidden()

用于渲染隐藏的输入元素,一般用于在页面显示隐藏域。
用法:

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

=>

@Html.HiddenFor(w => w.wizardStep)

(PS:Hidden和HiddenFor具体什么差别,后面我们会提到。)

对应Html的:

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

9.Html.Password()

用于渲染密码字段。他除了不保留提交的值和使用密码掩码之外,其他基本和TextBox的辅助方法一样。

用法:

@Html.Password("UserPassword") 

=>

@Html. PasswordFor(w => w.UserPassword)

对应Html的:

<input id="UserPassword" name="UserPassword" type="password" value="" />

10.Html.RadioButton()

用于渲染单选按钮,一般都是组合使用。如下:选择性别(男/女)

用法:

@Html.RadioButton("Gender","Male")
@Html.RadioButton("Gender","Female", true)

=>

@Html.RadioButtonFor(m => m.Gender, "Male")
@Html.RadioButtonFor(m => m.Gender, "Female")

11.Html.CheckBox()

用于渲染复选框按钮(checked 、 unchecked)。它是唯一 一个渲染两个输入元素的辅助方法。

用法:

@Html.CheckBox("isChecked")

对应于:

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

(这样的原因是:当没选中的时候,确保有值提交。)

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

Html.ActionLink():

(1).用于渲染一个指定另外一个控制器操作的超链接,跟前面的BeginForm辅助方法一样。

用法:

@Html.ActionLink("Link Text 显示的链接名称", "AnotherAction 要提交的控制器方法名称")

对应于:

<a href="/Home/AnotherAction">Link Text</a> 

(2).不同一个控制器则用:

@Html.ActionLink("Link Text", "AnotherAction", "AnotherController")

对应于:

<a href="/AnotherController/AnotherAction">Link Text</a>

(3).如果要传递个参数到action中,则可以用:

@Html.ActionLink("Link Text", "AnotherAction", "AnotherController", new{ ID = 123 } )

对应于:

<a href="/AnotherController/AnotherAction?ID=123">Link Text</a>

Html.RouteLink():

和Html.ActionLink() 遵循相同的模式。但是Html.RouteLink() 可以接收路由名称,而不是接收控制器名或者方法名。

如:

@Html.RouteLink("Link Text", new {action ="AnotherAction"} )

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

(1). Html.Partial用于将分部渲染成字符串。

(2). Html.RenderPartial是直接将用户控件嵌入到界面上。

如:

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

@{ Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx"); }

两者类似:

@Html.Partial("AlbumDisplay") (写法较方便) =>   @{ Html.RenderPartial("AlbumDisplay"); } (性能较好)

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

Html.RenderAction:通过Controller中的Action来调用用户控件

Controller:

public ActionResult UserControl()
{
    return PartialView();
}

View:

@Html.RenderAction("UserControl","Controller")

15.Url.Action()

Url辅助方法和Html的ActionLink和RouteLink类似。但他不是用Html标记的形式返回构建的Url,而是返回字符串形式的Url。

<span>
    @Url.Action("Browse", "Store", new{ genre = "Jazz" }, null )
</span>

对应Html的

<span>
    Store/Browse?genre=Jazz
</span>

16.Url.Content()

<script src="@Url.Content("~/Scripts/Jquery-1.10.1.min.js")" type="text/javescript"></script>

  除了上面介绍的这些Html辅助方法,还有上面提到的一些Html的For方法。那么For方法和其他的有什么异同之处呢?
For的方法可以结合Model实体,通过lambda表达式的方法来渲染。写法:@Html.LabelFor(m => m.GenreId)等。

参考文献:http://www.tuicool.com/articles/MRJNre

asp.net mvc 3.0 知识点整理 ----- (4).HtmlHelper(Html 辅助方法)介绍

时间: 2024-10-09 07:13:10

asp.net mvc 3.0 知识点整理 ----- (4).HtmlHelper(Html 辅助方法)介绍的相关文章

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

asp.net mvc 3.0 知识点整理 ----- (3).asp.net mvc 3 和asp.net mvc 4 对比

asp.net mvc的版本更新很快,每个版本都在前一个版本的基础上,进行性能的优化和功能的完善和提升. 以下,便是我对比了下两个版本,发现最基本的差异.(更新补充中..) 一.关于配置类Global.asax的不同 为了较少配置类的杂乱代码,asp.net mvc 4 中 将Global.asax文件中的内容单独到 App_Start 下的几个配置文件中去. 在asp.net mvc 3 中: public static void RegisterGlobalFilters(GlobalFil

asp.net MVC 4.0 Model元数据回顾——HtmlHelper的ModelMetadata

模板方法包括Display/DisplayFor.Editor/EditorFor.DisplayForModel/EditForModel提供辅助生成Html的模型元数据信息 1 public static MvcHtmlString EditorForModel(this HtmlHelper html, string templateName, string htmlFieldName, object additionalViewData) 2 { 3 return MvcHtmlStri

Asp.net mvc 4.0 高级编程 百度云下载

Asp.net mvc 4.0 高级编程 百度云下载地址:链接:http://pan.baidu.com/s/1o6zFvOe 密码:xyss 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性高.有利软件工程化管理等优点 3.采用WebAPI,客户端完全摆脱了代理和管道来直接进行交互 4.采用EasyUI前台UI界面插件,可轻松的打造出功能丰富并且美观的UI

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击 概述      众所周知,ASP.Net MVC程序在浏览器运行时产生了标准的Html标签,包括浏览器要发送的关键数据等内容都在Html内容里面,听起来不错,但是假如我们仿造类似的Html内容,更改里面关键数据,在浏览器运行起来会怎么样呢?好下面我们就做这样一个例子.       CSRF攻击例子 首先我们拿以前做好的person/edit作为例子 先看控制器代码 //初始页面        

ASP.NET MVC 4.0 升级到 5.0遇到的问题及解决思路

先说一下项目的情况 这个项目是公司的一个官网,之前同事写的,用的.NET 和ASP.NET MVC 4.0的.我用的新开发环境是VS2015,在原来的项目基础之上不能创建新的Controller.我就自定义一个Controller类,集成Controller,也可以创建View.调试运行都可以.后来想尝试局域网环境发布,用的是VS自带的发布功能.供公司其他同事浏览,发现一个问题:新建的Controller相关页面和在原有Controller里创建的页面都没有生成,就是没有发布成功.一开始还没注意

ASP.NET MVC 4.0 学习4-ActionResult

一,Controller簡介 Controller擔任了資料傳遞的角色,負責流程控制,決定存取哪個Model以及決定顯示哪個View頁面,即ASP.NET MVC中有關於『傳遞』的任務皆由Controller負責. Controller的執行階段負責呼叫執行Model中的資料處理,並把處理結果數據傳送到對應的View. Controller即為一個Class類,類中包含很多Method方法,方法中進行流程處理. Controller有以下特點: 類必須是Public公開類 類名稱必須以Contr

asp.net MVC 4.0 View回顾——布局页与分部页

asp.net MVC 4.0中总结 视图里加载部分视图几种方法 @RenderPage() 但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递. 1 @RenderPage("~/Shared/Component/Dialog.cshtml", new { title = "Hello world!", content="Nani" }) 分部视图接收数据通过Page 1 <div id="dial

ASP.NET MVC 4.0的Action Filter

有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你自定义创建action过滤器.Action过滤器是自定义的Attributes,用来标记添加Action方法之前或者Action方法之后的行为到控制器类中的Action方法中. 什么情况下可能会用到action过滤的地方: 日志,异常处理 身份验证和授权 - 限制用户的访问 输出缓存 - 保存一个Action的结果 网络爬虫的过滤 本地化 动态Action - 将一个Action注