View的使用

 

View有許多種多載方式如下

名稱 說明
View() 若View輸入參數為空值時,會以預設的controller name、action name回應。
View(Object model) 將傳入的model回應到預設的controller name,例如:return View(db.entity.ToList());
View(String viewName) 在預設的Controller底下,指定所要呈現的View,亦可打破預設的controller name。
View(IView view) 建立 ViewResult 物件,這個物件呈現指定的 IView 物件。
View(String viewName, Object model) 例如:return View("Index",db.entity.ToList());
View(String viewName, String masterName) 使用將檢視呈現至回應的檢視名稱和主版頁面名稱。例如:return View("Index","_Layout2");
View(IView view, Object model) 建立 ViewResult 物件,這個物件呈現指定的 IView 物件。
View(String, String, Object) 使用呈現檢視的檢視名稱、主版頁面名稱和模型,建立 ViewResult 物件。例如:return View("Index","_Layout2",db.entity.ToList());

 

針對View(String viewName)特別舉例一下

using System.Web.Mvc;

namespace test_route.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("About");
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your About page.";

            return View("About");
        }
    }
}

如上範例程式一開始預設會執行HomeController底下的action name Index,

然後return View到HomeController底下的About頁面,這是蠻直覺的範例。

但是,此View(String viewName)還有不同的用法,

using System.Web.Mvc;

namespace test_route.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("~/Views/Manage/MIndex.cshtml");
        }
    }
}

如上例,指定相對路徑給View(),此方式可打破預設的controller name,

讓程式寫法更加彈性。

 

參考資料:

Controller.View 方法