4控制器定义动作的特性:
NonAction :使用该属性标识的公用方法不会被视为动作
示例:
[NonAction]
Public void ThisIsNotAnAction(){
return view();
}
ActionName:动作默认名称是动作的方法名称,但是可以通过使用ActionName特性标记方法来改变动作的名称
示例:
[ActionNmae("View")]
Public ActionResult NotTheSameView(){
Return view();
}
AcceptVerbs:设置动作能对其作出响应Http动词,及就是两个相同动作名称并且响应不同的动词的方法
示例:
[AcceptVerbs("Get")]
Public ActionResult Update(){
return view();
}
[AcceptVerbs("Post")]
Public ActionResult Update(FormCollection form){
return view();
}
AcceptVerbs:还接收字符串数组
使用同一个方法处理两个或更多的动词 [AcceptVerbs("Get","Post")]
还可以使用枚举来操作:
[AcceptVerbs(HttpVerbs.Post)]
如果是两个或者更多是可以使用二进制或运算符
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
ViewData对象:
一种像视图传递数据的方法,ViewData就是一个简单存储“名-值”对象集合,可以在其中存储任何类型值,包括从简单消息字符串到复杂层次模型对象的任何类型。
强类型模型对象:代替ViewData字典中存储的要传递给视图的数据,可以创建自定义传输对象,并使用View方法的各种重载方法之一将对象传递给视图
示例:
Page标签中
Inherits="System.Web.Mvc.ViewPage<Model>"
需要导入Model的命名空间:
示例:<%@ Import Namespace="Mvc中Model的命名空间名称" %>
这种类型带来的优点:
访问传递给视图的对象的属性和方法是,不需要在进行其它转换
可以在编译时检查应用程序的正确性
支持智能感应,可列出自定义的传递对象中可能包含的所有对象
ViewData 和强类型的模型对象的生命周期被局限于当前请求,所以在视图中返回到浏览器之后,将不能在访问它们的值。
示例:
ViewData["View_Data"]="Asp MVC ViewData";
页面中可以这访问:<%= ViewData["View_Data"]%>
TempData对象:
TempData 就可以认为是我们asp.net中的Session对象,但是不能等同,TempData是一个松散的类型字典,但是其内容在下一个请求发生之前始终可用。
示例:
TempData["Temp_Data"]="Asp MVC TempData";
动作结果类型:
ViewResult:
它指示框架显示一个视图,同时提供一个自定义的模型对象,它有一个辅助方法View();
View方法具有8个不同的重载方法。
主要参数:
Viewname:需要呈现的视图名称
Model;传递个视图自定义模型对象
Mastename:包含指定视图的母版页的名称
PartialViewResult:
只需要返回需要的Html动作就必须返回PartivalViewResult类型结果,它有一个辅助方法PartialView
RedirectResult:
将用户重定向到其他的url或动作,通过返回RedirectResult 或RedirectToRouteResult类型的对象实现
示例:
Return Redirect("/Home/Index");
RedirectToRouteResult:
重定向到外部Url或固定的内部Url,Redirect方法很有用,但是Url在应用程序中保存不变,就存在修改Url字符串的风险,于是就有了RedirectToRouteResult方法
该方法辅助方法返回这种类型的ActionResult:
RedirectToAction:希望重定向到动作计算路由
RedirectToRout:直接选择准的定向到的路由
这些方法接受的参数:
RouteValueDictionary:包含(用于匹配路由规则并调用指定动作)路由标记的字典
routName:用户友好的路由名称。该名称是在应用程序启动代码中注册路由时为路由提供的。
示例:
Return RedirectToAction("Index","Home", new {
Id="12", name="lin.su"
});
示例:
Public ActionResult RedirectToRouteSample(){
RouteValueDictionary dictionary =new RouteValueDittionary();
dictionary["action"]="Index";
dictionary["controller"]="Home";
dictionary["id"]=12;
Return RedirectToRoute(dictionary);
}
JsonResult:
返回给视图一个json格式化的消息,可以是使用辅助Json方法,该方法将要格式化的对象,内容类型(如果没有提供参数,默认是application/json)以及内容编码作为参数:
示例:
Modle molde =new Model();
Return Josn(modle);
JavaScriptResult:
希望在传递在浏览器上执行的几行javascript代码:动作返回JavaScriptResult类型结果,这种类型是通过javascript辅助方法来创建的
示例:
Return JavaScript("alert('Hello Mvc Javascrpt')");
ContentResult:
希望完全控制传递给用户的响应,就可以使用ContentResult
示例:
Return Content("Italy|Simone|Iran|Keyvan","text/plain");
FileContentResult:
这种动作结果指示框架为用户传递通用的二进制流:
示例:
Return File(Path.GetFullPath("Content/a.jpg"),"imag/jpg","b.jpg");
EmptyResult:
这种类型指示框架不进行任何操作
示例:(动态生成一副图像或者一个PDF是)
Return new EmptyResult();
为了返回一个空结果,也可以返回null,框架会自动转换成一个EmptyResult对象