Mvc基本切入及controller认识

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

原文地址:https://www.cnblogs.com/linsu/p/2408406.html