zoukankan      html  css  js  c++  java
  • MVC入门之Controllers

    下面是一个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的异常,你可以重载定义

  • 相关阅读:
    MySQL 练习题
    MySQL 增删查改
    HTML显示与隐藏
    360布局
    div布局
    HTML练习2
    HTML练习

    if语句的用法及其案例
    输入输出,数据类型与运算符
  • 原文地址:https://www.cnblogs.com/wantouqiao2009/p/1440944.html
Copyright © 2011-2022 走看看