各種ActionResult介紹
1.ViewResult:用來將View檢視轉譯成Web頁面
public ViewResult Index() { return View(); }
2.PartialViewResult:用來轉譯部分檢視
public PartialViewResult Index(){ return PartialView("Simple") ;}//指定部分檢視名稱Simple
3.ContentResult:用來回傳自訂類別內容,而且是純文字的內容,如:HTML、JS、CSS等
public ContentResult Index(){
return Content("TestContent"); //回傳文字
//return Content("<h1>TestContent</h1>","text/html");//回傳HTML
//return Content("<script>alert('TestContent');</script>","application/javascript");//回傳JS
}
4.EmptyResult:回傳null結果,Controller沒有內建呼叫的方法,必須用new EmptyResult(),以下三個回傳方式都是相同的
public EmptyResult NotFound(){
return new EmptyResult();
//return empty;
//return null;
}
5.JavaScriptResult:回傳一段JavaScript到Response
public JavaScriptResult Js(){
return JavaScript("alert('回傳JavaScriptResult')");
}
6.JsonResult:回傳JSON格式的資料
public JsonResult JsonTest(){
List<Test> test=new List<Test>{
new Test{ID="0001",Name="Joe",City="Taipei"},
new Test{ID="0002",Name="Tom",City="Kaohsiung"}
};
return Json(test,JsonRequestBehavior.AllowGet);
}
7.FileResult:總共有三種衍生類別
FilePathResult:將檔案內容傳送到Response當作輸出
FileContentResult:將二進位的內容傳送到Response當作輸出
FileStreamResult:使用Stream執行個體將二進位內容傳送到Response當作輸出
雖然共有三種衍生類別,但是在Action當中其實統一使用File方法回傳就可以了
public ActionResult Index()
{
string pdfName = @"~/doc/test.pdf";//提供下載的來源檔案路徑及名稱
string contentType = "application/pdf";//MIME Type
string downloadName = "123.pdf";//檔案下載到客端的名稱
return File(pdfName, contentType, downloadName);//統一回傳File方法
}
8.RedirectResult:共有兩種方法
Redirect:臨時轉向,Http狀態碼為302
RedirectPermanent:永久轉向,Http狀態碼為301
public RedirectResult TempRedirect(){
return Redirect("/Temp/Test");
}
public RedirectResult NewPage(){
return RedirectPermanent("https://NewPage.com");
}
9.RedirectToRouteResult:共有兩個方法
RedirectToAction:使用Controller和Action名稱
RedirectToRoute:使用URL作轉向
public ActionResult Index(){
return RedirectToAction("Details");//使用指定的Action名稱作轉向
//return RedirectToAction("Details","Home");//使用指定的Controller與Action
//return RedirectToAction("Details","Home","id=001");//加入URL路由參數,網址為/Home/Details/001
//return RedirectToRoute(new{controller="Home",action="Details",id=001})//指定URL路由資訊
}
10.HttpStatusCodeResult:用來產生HTTP狀態碼,有HttpNotFound和HttpUnauthorizedResult兩個子類別
public HttpNotFoundResult NotFound(){
return HttpNotFound();//回傳404狀態碼
}
public HttpUnauthorizedResult Unauthorized(){
return new HttpUnauthorizedResult("沒有權限,拒絕存取");//回傳401狀態碼
}
額外補充
ActionResult是所有Result的基底類別,所以一般我們在建立Action時候,通常都直接使用ActionResult來概括所有Action
public ActionResult Index(){return View();}
public ViewResult Index(){return View();}
//上面兩個Action的結果都是一樣的