MVC Controller return 格式之JsonResult、ContentResult、RedirectResult……


 
//語法

public
class JsonResult : ActionResult public class ContentResult : ActionResult public class RedirectResult : ActionResult eg: public ActionResult Index() {   return View(); } //返回一個子頁 public ActionResult Ascx() {   return PartialView(); } //返回文本 public ActionResult Text() {   return Content("這是一段文本"); } 返回Json public JsonResult GetJson() { var Data = new { demo = demoList, Total = demoList.Count}; //在這里必須要設置JSON的請求行為為GET return Json(Data, JsonRequestBehavior.AllowGet); } public ContentResult DoSelect(string StudentId) {   var result = "success";   return Content(JsonConvert.SerializeObject(result, Formatting.None)); } public ActionResult Index() { //這個是BiewBag傳值的方法 ViewBag.Title = "Demo一覽畫面"; if (0 == demoList.Count) { //模擬select * from DemoModels for (int i = 1; i <= 7; i++) { demoList.Add(this.CreateDemoModels(i)); } } return View(demoList); } //輸出JS文件 public ActionResult Js() {   return JavaScript("var x=0;"); } //頁面跳轉 1.跳轉到Url public RedirectResult rdurl() {   return Redirect("http://www.baidu.com"); } 2.跳轉到Action public ActionResult rdaction() { return RedirectToAction("Index","Eice"); } 3.跳轉到Routing規則 public ActionResult rdrouting() {   return RedirectToRoute("Default",//Route名   new{Controller = "Eice",Action = "Index" }); } //顯示文件 public ActionResult fn() {   return File("/Content/site.css","text/css"); }
 
        
        //Excel導入模板下載
        public FileResult GetFile()
        {
            const string url = "~/TempExcel/商品評論模板.xls";
            var fileName = Server.MapPath(url);
            var name = Path.GetFileName(fileName);
            return File(fileName, "application/ms-excel", Url.Encode(name));
        }

 

 另外,

Webapi的接口返回值主要有四種類型

  • void無返回值
  • IHttpActionResult
  • HttpResponseMessage
  • 自定義類型   

詳情參見:http://www.cnblogs.com/zfdcp-028/p/5788649.html

 

跳轉到同一控制器內的action和不同控制器內的action、帶有參數的action跳轉和不帶參數的action跳轉。

一、RedirectToAction("Index");//一個參數時在本Controller下,不傳入參數。

二、RedirectToAction(ActionName,ControllerName) //可以直接跳到別的Controller.

三、RedirectToRoute(new {controller="Home",action="Index"});//可跳到其他controller

四、RedirectToRoute(new {controller="Home",action="Index", id=param});//可跳到其他controller,帶參數。

五、Response.Redirect("Index?id=1");//適用於本controller下的方法名稱,可帶參數。
六、return Redirect("Index");//適用於本controller下的方法名稱。

七、return View("Index"); //直接顯示對應的頁面 不經過執行Controller的方法。 
八、return View("~/Views/Home/Index.aspx");//這種方法是寫全路徑,直接顯示頁面,不經過Controller方法
九、return View();//直接顯示頁面,不經過Controller方法

 

重寫返回結果HttpResponseMessage

    public class BaseController : ApiController
    {
        public int loginid { get; set; }

        public string loginname { get; set; }


        public BaseBll baseBll { get; set; }


        protected override void Initialize(HttpControllerContext controllerContext)
        {
            //初始化請求上下文
            base.Initialize(controllerContext);
            try
            {
                new SortedDictionary<string, string>();
                string username = string.Empty;
                HttpRequestHeaders headers = controllerContext.Request.Headers;
                if (headers.Contains("e"))
                {
                    text = (headers.GetValues("e").FirstOrDefault<string>().ToString() ?? string.Empty);
                    text = System.Web.HttpUtility.UrlDecode(username);
                }
                UserInfoEntity userInfo = new LoginBll().GetUserInfo(username);
                this.loginid = userInfo.LoginID;
                this.loginname = userInfo.LoginName;
                List<UserAuthorityEntity> tempList = userInfo.UserRole.UserAuthority;
                //不存在安全問題 后續文章有權限驗證
                if (tempList.Where(c => c.AuthorityName == "權限名稱").ToList().Count > 0)
                {   
                    //調用一個有權限的bll層
                    this.baseBll = new SeniorBll();
                }
                else
                { 
                    //調用一個沒有權限的bll層
                    this.baseBll = new OrdinaryBll();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteErrorLog("Initialize", ex);
            }
        }
        /// <summary>
        /// 設置action返回信息
        /// </summary>
        /// <param name="result">返回實體</param>
        /// <returns></returns>
        protected HttpResponseMessage GetHttpResponseMessage(object result)
        {
            BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(0, result, string.Empty);
            return new HttpResponseMessage()
            {
                Content =
                   new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8,
                       "application/json")
            };
        }
        /// <summary>
        /// 設置action返回信息
        /// </summary>
        /// <param name="result">返回實體</param>
        /// <param name="msg">返回的信息參數</param>
        /// <returns></returns>
        protected HttpResponseMessage GetHttpResponseMessage(object result, ref string msg)
        {
            BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(0, result, msg ?? string.Empty);
            return new HttpResponseMessage()
            {
                Content =
                   new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8,
                       "application/json")
            };
        }
    }

參考:http://blog.csdn.net/l1158513573/article/details/77045213   WebApi開發爬坑記之·一重寫ApiController


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM