在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
下面是一个Controller的定义: public class ProductController : Controller { // // GET: /Product/ public ActionResult Index() { return View(); } public ActionResult Help() { return View(); } public ActionResult Details(int Id) { return View(); } }
一、Action 中 return View()的理解 也就是ActionResult,这里return View()其实就是返回html格式的内容给页面显示,而ActionResult是有很多类型的: · View() – 返回一个 ViewResult. · PartialView() – 返回一个 PartialViewResult. · RedirectToAction() – 返回一个 RedirectToRouteResult . · Redirect() – 返回一个 RedirectResult. · Content() – 返回一个 ContentResult. · Json() – 返回一个 JsonResult. · File() – 返回一个 FileResult. · JavaScript() – 返回一个 JavaScriptResult. · RedirectToRoute() – 返回一个 RedirectToRouteResult. 解释: · ViewResult – 表示一个普通的 ASP.NET MVC view. · PartialViewResult – 表示一个ASP.NET MVC view的一个片段. · RedirectResult – 表示重定向到另外一个controller action 或者 URL. return RedirectToAction("Index"); return RedirectToAction(“Index”, “Product”);
return RedirectToAction(“Details”, new {id=53});
· ContentResult – 表示发送一些基本的类型的内容给浏览器,只要是.net的基本类型都可以 比如:string,int,double等等 public string SayHello() { return "Hello"; }
· JsonResult – 返回一个Json类型给浏览器 public ActionResult List() { var quotes = new List<string> { "Look before you leap", "The early bird gets the worm", "All hat, no cattle" }; return Json(quotes); }
· FileResult – 返回一个文件,用来下载的 public ActionResult Download() { return File("~/Content/CompanyPlans.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "CompanyPlans.docx"); }
· EmptyResult – 一个action没有返回结果 · HttpUnauthorizedResult – 返回HTTP Unauthorized status code. · JavaScriptResult – 返回一个JavaScript 文件. · RedirectToRouteResult – 使用route values重定向到另外一个controller的action
二、如何控制Action被调用 1.使用AcceptVerbs 看代码: // GET: /Employee/Create [AcceptVerbs(HttpVerbs.Get)] public ActionResult Create() { return View(); } // POST: /Employee/Create [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(Employee employeeToCreate) { try { _repository.InsertEmployee(employeeToCreate); return RedirectToAction("Index"); } catch { return View(); } } // DELETE: /Employee/Delete/1 [AcceptVerbs(HttpVerbs.Delete)] public ActionResult Delete(int id) { _repository.DeleteEmployee(id); return Json(true); }
就是控制是Get还是Post的时候触发Create这个Action了 http 支持的动作类型: · OPTIONS – Returns information about the communication options available. · GET – Returns whatever information is identified by the request. · HEAD – Performs the same operation as GET without returning the message body. · POST – Posts new information or updates existing information. · PUT – Posts new information or updates existing information. · DELETE – Deletes information. · TRACE – Performs a message loop back. · CONNECT – Used for SSL tunneling.
2.使用ActionName [ActionName("Edit")] [AcceptVerbs(HttpVerbs.Get)] public ActionResult Edit_GET(Merchandise merchandiseToEdit) { return View(merchandiseToEdit); }
3.使用ActionMethodSelector namespace MvcApplication1.Selectors { public class AjaxMethod : ActionMethodSelectorAttribute { public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) { return controllerContext.HttpContext.Request.IsAjaxRequest(); } } }
在Controller中的代码: [AjaxMethod] [ActionName("Index")] public string Index_AJAX() { var selectedIndex = _rnd.Next(_news.Count); return _news[selectedIndex]; } 三、一个特殊处理:请求没有定义的Action的处理 public class CatalogController : Controller { public ActionResult Create() { return View(); } public ActionResult Delete(int id) { return View(); } protected override void HandleUnknownAction(string actionName) { ViewData["actionName"] = actionName; View("Unknown").ExecuteResult(this.ControllerContext); } }
使用HandleUnkonwnAction,默认情况下返回404 Resource Not Found的异常,你可以重载定义 |
请发表评论