我嘗試了ASP.NET MVC,但是在閱讀了一個巨大的教程之後,我有點困惑。我瞭解控制器如何將URL路由到動作,但主頁如何工作?主頁是否自己的控制器(例如「主頁」)沒有任何操作?這聽起來是正確的,但是如何在沒有Actions的情況下實現功能(沒有操作意味着沒有方法調用View Engine)?ASP.NET MVC中的主頁
換句話說,我的問題是這樣的:如何實現主頁(根據控制器和視圖)?您能否提供樣品代碼?
我嘗試了ASP.NET MVC,但是在閱讀了一個巨大的教程之後,我有點困惑。我瞭解控制器如何將URL路由到動作,但主頁如何工作?主頁是否自己的控制器(例如「主頁」)沒有任何操作?這聽起來是正確的,但是如何在沒有Actions的情況下實現功能(沒有操作意味着沒有方法調用View Engine)?ASP.NET MVC中的主頁
換句話說,我的問題是這樣的:如何實現主頁(根據控制器和視圖)?您能否提供樣品代碼?
「首頁」無非是任意Action
更具體Controller
返回一定View
要設置「主頁」,網頁,或更好的措辭,默認頁面,則需要更改路由在Global.asax.cs
文件的信息:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults
);
公告路線定義:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults
);
這路由是一個「全部通過」路由,這意味着它將採取任何URL並將其分解爲特定的控制器和操作和標識。如果沒有或路由的一個定義,它會使用默認值:
new { controller = "NotHome", action = "NotIndex", id = "" }
這是說「如果有人訪問我的應用程序,但沒有指定控制器或動作,我會重定向到我的NotHome
控制器的動作NotIndex
「。我故意將「Not」表示「Default.aspx」,「Index.html」的命名約定不適用於MVC路由。
主頁通常等同於默認控制器上的默認操作/視圖。
所以,你會創建,例如,與Index
動作和相應的視圖HomeController
,那麼在你的路線映射你會創建一個默認的,包羅萬象的路線是這樣的:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" });
這取決於你的意思是「主頁」。如果您的意思是當您轉到http://www.yoursite.com(沒有頁面或控制器名稱)時看到的頁面,那麼這就是索引控制器,它與任何其他控件一樣工作,除非您在URL中看不到控制器的名稱。
如何創建索引控制器?它需要有一個行動? – 2010-03-17 23:39:37
對不起,我的意思是說索引行動。任何控制器都可以有一個索引動作,該動作在路由中默認配置爲該控制器的「主目錄」。 – 2010-03-18 13:29:26