ASP.NET MVC中的主页

时间:2010-03-17 17:46:48

标签: c# asp.net asp.net-mvc

我正在尝试ASP.NET MVC,但是,在阅读了一篇大型教程之后,我有点困惑。我理解控制器如何具有路由到URL的操作,但主页如何工作?主页是否有自己的控制器(例如“Home”)没有动作?这听起来是正确的,但是如果没有Actions就实现了功能(没有Actions意味着没有调用View Engine的方法)?

换句话说,我的问题是:如何实施主页(根据控制器和视图)?您能提供示例代码吗?

3 个答案:

答案 0 :(得分:7)

“首页”页面只是特定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
        );

这条路线是一条“全能”路线,这意味着它会占用任何网址并将其分解为特定的控制器和动作和ID。如果未定义任何路由或其中一个路由,则将使用默认值:

new { controller = "NotHome", action = "NotIndex", id = "" }

这表示“如果有人访问我的应用程序,但未指定控制器或操作,我将重定向到我的NotIndex控制器的NotHome操作”。我故意用“Not”来说明“Default.aspx”,“Index.html”的命名约定不适用于MVC路由。

答案 1 :(得分:3)

主页通常等同于默认控制器上的默认操作/视图。

所以你创建一个HomeController Index动作和相应的视图,然后在你的路线映射中你创建一个默认的,全能的路线,比如说这样:

routes.MapRoute(
    "Default",                                              
    "{controller}/{action}/{id}",                           
    new { controller = "Home", action = "Index", id = "" });

答案 2 :(得分:0)

这取决于“主页”的含义。如果您指的是转到http://www.yoursite.com时看到的页面(没有页面或控制器名称),那么这就是索引控制器,除了您在URL中看不到控制器的名称外,它与其他控制器一样。