第4章 深入动作方法

第4章 深入动作方法

4.1 神奇的动作方法参数

在ASP.NET MVC中,可以把路由数据(对应RouteData),URL数据(对应

Request.QueryString集合),表单数据(对应Request.Form集合),自动映射

到动作方法参数中。

在定义动作方法参数时,需要保证以下几点

>方法参数的命名要求,方法参数必须与目标数据参数一致,不区分大小写。

>参数数据类型的要求,数据类型兼容。

4.2 使用验证功能

4.2.1 验证特性

ASP.NET MVC 中常见的验证特性

验证特性

功能

Required

必填验证

Compare

比较验证

StringLength

字符串的长度验证

Range

数据范围验证

RegularExpression

正则表达式

这些验证都属于System.ComponentModel.DataAnnotations命名空间,并继承

自ValidationAttribute类,该类包含的一个基本的属性就是ErrorMessage,

即用来定义消息的属性。

1.Required验证特性

示例:

[Required(ErrorMessage=”姓名不得为空”)]

Public string Name{get;set;}//姓名

2.StringLength验证特性

示例:

[StringLength(2000,ErrorMessage=”{0}长度不能超过{1}”)]

Public string Remarks{get;set;}//备注

[StringLength(11,MinimumLength=7,ErrorMessage=”{0}长度必须在{2}和{1}

之间”)]

Public string Telephone{get;set;}//电话号码

3.Range验证特性

示例:

[Range(10,1000,ErrorMessage=”{0}必须在{1}和{2}之间”)]

Public int? Price{get;set;}//价格

[Range(25.0,150.0,ErrorMessage=”{0}必须在{1}和{2}之间”)]

Public double? Weight{get;set;}//体重

[Range(typeof(DateTime),”2012-1-1”,”2012-10-1”,ErrorMessage=”{0}

必须在{1}和{2}之间”)]

Public DateTime? PublishTime{get;set;}//发布日期

4.Compare验证特性

示例:

Public string Password{get;set;}//密码

[Compare(“Password”,ErrorMessage=”两次输入密码必须一致”)]

Public string PasswordConfirm{get;set;}//重复密码

5.RegularExpression验证特性

[RegularExpression(@”正则表达式”,ErrorMessage=”{0}格式错误”)]

Public string MailAddress{get;set;}//Email地址

在实际开发中,一般每个属性还会应用System.ComponentModel.DisplayName

特性。

示例:

[DisplayName(“密码”)]

[Required(ErrorMessage=“{0}不能为空”)]

Public string LoginPwd{get;set;}

自定义验证比较繁琐,一般是重写ValidationAttribute类,编写服务器端的

验证规则;另外,还需要编写客户端的验证规则。

4.2.2 ModelState和服务器端验证

>ModelState.IsValid//验证生效,是否通过

>ModelState.AddModelError(“错误名”,”错误信息”)//添加额外错误信息

Html对象的两个帮助方法来输出验证信息,如下所示:

Public MvcHtmlString ValidationMessage(string modelName);//验证单个信息

Public MvcHtmlString ValidationSummary();//汇总验证

4.3 方法不等与动作方法

4.3.1 动作方法上的特性

1.[HttpGet]

2.[HttpPost]

3.[NonAction]

4.[ActionName(“Index”)]

当动作方法应用了ActionName特性后,如果动作方法内部使用View()方法调用

视图(不指定视图的名称),则调用的是和ActionName设置同名的视图。

4.4 从动作方法到内容输出

4.4.1 解析ActionResult

常用输出类型

类型

说明

EmptyResult

没有返回值,动作方法不需要输出时使用

ContentResult

将指定内容作为文本输出

JsonResult

输出Json字符串

JavaScriptResult

输出JavaScript文件

RedirectResult

指定的URL来执行重定向

RedirectToRouteResult

使用指定的路由值字典来执行重定向的结果

FilePathResult

继承自FileResult抽象类,指定文件路径来输出文件

FileContentResult

继承自FileResult抽象类,指定流来输出文件

FileStreamResult

继承自FileResult抽象类,指定字节数组来输出文件

ViewResult

继承自ViewResultBase抽象类,调用视图文件输出视图

PartialViewResult

调用视图文件输出分部视图

常用控制器输出方法

类型

说明

ContentResult

Content(stirng content)

指定内容作为文本输出,content代表要输出的内容

JsonResult

Json(object data)

输出Json字符串,data要序列化的对象,JsonRequestBehavior.AllowGet

JavaScriptResult

JavaScript(string script)

输出JavaScript文件

RedirectResult

Redirect(string url)

执行重定向,url表示重定向的地址

RedirectToRouteResult

RedirectToRoute(object routeValue)

执行重定向,routeValue对应路由参数值

RedirectToRouteResult

RedirectToAction

(string actionName)

执行重定向,actionName对应方法名

FilePathResult

File(string filename,

String contentType)

输出文件,filename对应文件名,contentType对应输出类型

FileContentResult

File(byte[] fileContents,

string contentType)

输出文件,fileContents对应二进制文件内容,contentType对应输出类型

FileStreamResult

File(Stream fileStream,

String contentType)

输出文件,fileStream对应文件流,contentType对应输出类型

ViewResult View(string viewName)

输出视图页,viewName对应试图页名称

PartialViewResult

PartialView(string viewName)

输出分部视图,viewName对应视图名称

4.4.2 视图助手——HtmlHelper

常用HtmlHelper输出方法

常用方法

说明

MvcForm BeginForm

(stirng actionName,

stirng controllerName)

输出<form/>

MvcHtmlString Hidden(string name)

输出<input type=”hidden”/>

MvcHtmlString Password

(string name)

输出<input type=”password”/>

MvcHtmlString RadioButtion

(string name,object value)

输出<input type=”radio”/>

MvcHtmlString CheckBox

(string name)

输出<input type=”checkbox”/>

MvcHtmlString TextBox(stirng name)

输出<input type=”text”/>

MvcHtmlString TextArea

(string name)

输出<textarea/>

MvcHtmlString DropDownList

(string name)

输出<select/>

MvcHtmlString ListBox(string name)

输出<select multiple=”true”/>

MvcHtmlString ActionLink(string

linkText,string actionName)

输出<a/>

MvcHtmlString RouteLink(string

linkText,object routeVaues)

输出<a/>

MvcHtmlString ValidationMessage

(string modelName)

输出单条验证信息

MvcHtmlString ValidationSummary()

输出验证汇总信息

MvcHtmlString Partial

(string partialViewName)

输出分部视图

4.4.3 自动生成客户端验证

1.导入js脚本

>jquery-1.7.1.min.js

>jquery-validate.min.js

>jquery.validate.unobtrusive.min.js

2.使用HtmlHelper编写Form表单

posted @ 2018-04-17 14:54  Bug的梦魇  阅读(369)  评论(0编辑  收藏  举报