MVC(五、HtmlHelper(Html 辅助方法)介绍)

在View视图中,Html的类型是System.Web.Mvc.HtmlHelper
介绍一些常用的html辅助方法的主要作用和使用方法


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

1)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>

2)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 >

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编辑器。


8、Html.Hidden()

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

@Html.Hidden("wizardStep", "1")
@Html.HiddenFor(w => w.wizardStep)

对应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>

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值