asp.net mvc 3.0 知识点整理 ----- (3).HtmlHelper(Html 辅助方法)介绍
在View视图中,Html的类型是System.Web.Mvc.HtmlHelper<T>, 所有的辅助方法都需要和ModelState交互。那么,ModelState是什么呢?它是模型绑定的附属品,并且存有模型绑定期间检测到的所有验证错误。以及用户提交用到来更新模型的原始值。
本篇博文,我们主要来介绍下一些常用的html辅助方法的主要作用和使用方法。
1. Html.BeginForm()和Ajax.BeginForm()。
Html.BeginForm():
同于传统的表单提交,主要是生成表单的form值,如果表单时强类型视图,则在提交表单的时候,会自动将表单元素name名称与强类型视图中的类型实体的属性值相同的进行填充;同样在表单中,如果我们是强类型视图,则可以直接使用@Model.UserName将值输到指定位置。
@using( Html.BeginForm( "方法名", "Controller名", FormMethod.提交的方法, new { target="_blank", @class = "表单的class名,方便定义样式", @id="表单的id名,方便获取表单元素"} )){ }
<form action="Controller名/方法名" method ="提交的方法" class ="表单的class名" id="表单的id名" target="_blank"></form>
@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()
@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()
ModelState.AddModelError("Title","What a terrible name!");
@Html.ValidationMessage("Title")
4.Html.TextBox()、Html.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 < br /> information
</textarea >
[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", "")
=>
@Html.HiddenFor(w => w.wizardStep)
<input id="wizardStep" name="wizardStep" type="hidden" value="1" />
9.Html.Password()
@Html.Password("UserPassword")
=>
@Html. PasswordFor(w => w.UserPassword)
<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()
@Html.CheckBox("isChecked")
<input name="isChecked" id="isChecked" type="checkbox" value="true" />
<input name="isChecked" type="hidden" value="false"/>
(这样的原因是:当没选中的时候,确保有值提交。)
@Html.ActionLink("Link Text 显示的链接名称", "AnotherAction 要提交的控制器方法名称")
<a href="/Home/AnotherAction">Link Text</a>
@Html.ActionLink("Link Text", "AnotherAction", "AnotherController")
<a href="/AnotherController/AnotherAction">Link Text</a>
@Html.ActionLink("Link Text", "AnotherAction", "AnotherController", new{ ID = 123 } )
对应于:
<a href="/AnotherController/AnotherAction?ID=123">Link Text</a>
@Html.RouteLink(
linkText: "route:Test",
rountName: "test",
routeValues: new{controller="section", action="Index", id=123 }
)
@{ Html.RenderPartial("LogOnUserControl"); }
或
@{ Html.RenderPartial("~/Areas/Comm/Views/Shared/LogOnUserControl.ascx"); }
public ActionResult UserControl()
{
return PartialView();
}
@Html.RenderAction("UserControl","Controller")
15.Url.Action()
<span>
@Url.Action("Browse", "Store", new{ genre = "Jazz" }, null )
</span>
<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)等。
asp.net mvc 3.0 知识点整理 ----- (3).HtmlHelper(Html 辅助方法)介绍的更多相关文章
- asp.net mvc 3.0 知识点整理 ----- (4).asp.net mvc 3 和asp.net mvc 4 对比
asp.net mvc的版本更新很快,每个版本都在前一个版本的基础上,进行性能的优化和功能的完善和提升. 以下,便是我对比了下两个版本,发现最基本的差异.(更新补充中..) 一.关于配置类Global ...
- asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比
通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...
- asp.net MVC 4.0 Model元数据回顾——HtmlHelper的ModelMetadata
模板方法包括Display/DisplayFor.Editor/EditorFor.DisplayForModel/EditForModel提供辅助生成Html的模型元数据信息 public stat ...
- [ASP.NET MVC]笔记(一)模型和HTML辅助方法
1.ModelState.IsValid 检验模型有效性 2.显示模型绑定(操作方法中没有参数): UpdateModel(album):模型绑定期间出错会抛出异常 TryUpdateModel ...
- ASP.NET MVC 3.0 Controller基础
ASP.NET MVC 3.0 Controller基础 1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...
- 返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller
原文:返璞归真 asp.net mvc (7) - asp.net mvc 3.0 新特性之 Controller [索引页][源码下载] 返璞归真 asp.net mvc (7) - asp.net ...
- 返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model
原文:返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model [索引页][源码下载] 返璞归真 asp.net mvc (8) - asp.net mvc ...
- ASP.NET MVC 4.0中选择Windows 验证默认出错拒绝访问的原因和解决方案
在VS 2012或者2013 中,根据模板创建一个ASP.NET MVC 4.0的应用程序,选择下面的模板 然后选择Intranet Application 不对源代码做任何修改,直接按下F5调试,会 ...
- 安装了VS2010 sp1 后再安装ASP.NET MVC 3.0的问题
安装了VS2010 sp1 后再安装ASP.NET MVC 3.0的问题(Final Result: Installation failed with error code: (0x80070643) ...
随机推荐
- win10常用快捷命令——运行面板启动
打开运行面板,WIN+R 打开命令提示符面板 ,在运行面板输入cmd,回车 打开控制面板 ,在运行面板输入control,回车 打开IIS管理器面板 , ...
- UDP中使用bind和connect的作用
1:UDP中可以使用connect系统调用 2:UDP中connect操作与TCP中connect操作有着本质区别. TCP中调用connect会引起三次握手,client与server建立连结.UD ...
- c++文件打包工具实现
没事做就来写一个打包的工具吧.很多是网络上面找的,只是我把他修改一下合并在一起. // PacketFile.cpp : 定义控制台应用程序的入口点. #include "stdafx.h& ...
- dhtmlxTreeGrid
最终效果(只添加了一级子树,可以根据需求增加级数,方法在后面). HTML和js代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Tran ...
- Scala:Method 小技巧,忽略result type之后的等号
var x = 0 def IncreaseOne(): Int = { x += 1 x } def IncreaseOne() = { x += 1 x } def IncreaseOne = { ...
- 如何实现一个Java Class 解析器
原文出处: tinylcy 最近在写一个私人项目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能让我们对Java Class文件的设计与结构能够有一个深入的理解.主体框架与基 ...
- windows多线程同步--临界区
推荐参考博客:秒杀多线程第五篇 经典线程同步 关键段CS 关于临界区的观念,一般操作系统书上面都有. 适用范围:它只能同步一个进程中的线程,不能跨进程同步.一般用它来做单个进程内的代码快同步,效率 ...
- pid 控制算法
http://blog.csdn.net/huangkangying/article/details/78129148 https://zh.wikipedia.org/wiki/PID%E6%8E% ...
- mysql如何处理亿级数据,第一个阶段——优化SQL语句
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- [javase学习笔记]-6.2 类与对象的关系
这一节我们来看一下类与对象之间的关系. 我们学习java语言,目的就是用java语言对现实生活中的事物进行描写叙述.那么我们如何来描写叙述呢.这就引出了类,我们在实际实现时,是通过类的形式来体现的. ...