Action运行完后,回传的值通过ActionResult 类别或者其衍生的类别操作。ActionResult是一个抽象类,因此,Asp.net MVC 本身就实作了许多不同类型的ActionResult的子类别。
ActionResult 子类以及说明:
常用的ViewResult用来回传一个View,即HTML的页面内容;
PartialViewResult用来回传一个View,但是这个View是PartialView;
RedirectResult用来将网页转向其他的网址;
EmptyResult用来返回一个空白的页面;
ContentResult返回一个文字属性(文本内容);
FileResult返回一个二进制的文档;
FileContentResult 返回一个可以下载的二进制文件;
FilePathResult返回一个可以下载的并且制定路径的二进制文件;
FileStreamResult返回一个可以下载的流式文件;
JsonResult返回一个JSON结果;
JavaScriptResult返回一个JavaScript对象。
这些都是继承自ActionResult的类别,也可以用来当做Action 的类型。
但是我们经常在Controller中定义的返回类型为ActionResult, 但是返回的值经常是别的,比如:
1 //
2 // GET: /Product/
3 public ActionResult Index()
4 {
5 return View();
6 }
这是以为View返回的对象是ViewResult.
Controller常见的方法Redirect返回的对象是RedirectResult;
RedirectToAction返回的对象是RedirectToActionResult;
RedirectToRoute返回的对象是RedirectToRouteResult;
Json返回的对象是JsonResult;
JavaScriptResult返回的对象是JavaScriptResult;
Content返回的对象是ContentResult;
File返回的对象是FileContentResult、FilePathResult、FileStreamResult等;
下面是几个例子
返回PartialView

1 public ActionResult ProductList()
2 {
3 ProductBLL productBLL = new ProductBLL(HttpContext.Application["EFConnectionString"].ToString());
4
5 IEnumerable<Product> products = productBLL.ListProducts();
6
7 return PartialView("~/Views/InStock/_Products.cshtml",products);
8 }

返回Json

1 public ActionResult RetrieveProduct(int id)
2 {
3 ProductBLL productBLL = new ProductBLL(HttpContext.Application["EFConnectionString"].ToString());
4
5 Product product = productBLL.RetrieveProduct(id);
6
7 return Json(product,JsonRequestBehavior.AllowGet);
8 }

返回pdf

1 public ActionResult LoadPdfFile()
2 {
3 string path = @"C:\ZJF\My Team Solutions\Allure\Web\BackOfficeV2\Google_Merchant_Center_快速操作手册.pdf";
4 FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
5
6 return File(stream, "application/pdf");
7 }

本文介绍了Asp.net MVC中,Action运行完回传值通过ActionResult类别或其衍生类别操作。阐述了ActionResult多个子类的用途,如ViewResult回传HTML页面、RedirectResult转向其他网址等。还说明了Controller中常见方法返回的对应对象类型,并给出了返回PartialView、Json、pdf等例子。
415

被折叠的 条评论
为什么被折叠?



