【问题标题】:Home Pages in ASP.NET MVCASP.NET MVC 中的主页
【发布时间】:2010-03-17 17:46:48
【问题描述】:

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

换句话说,我的问题是:主页是如何实现的(就控制器和视图而言)?您能否提供示例代码

【问题讨论】:

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


    【解决方案1】:

    “主页”页面只不过是特定Controller中的任意Action,它返回某个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 并将其分解为特定的控制器、操作和 ID。如果没有定义或定义其中一个路由,它将使用默认值:

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

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

    【讨论】:

      【解决方案2】:

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

      因此,例如,您将创建一个带有 Index 操作和相应视图的 HomeController,然后在您的路由映射中创建一个默认的、包罗万象的路由,如下所示:

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

      【讨论】:

        【解决方案3】:

        这取决于您所说的“主页”是什么意思。如果您指的是当您转到 http://www.yoursite.com 时看到的页面(没有页面或控制器名称),那么它就是 Index 控制器,它的工作原理与其他任何控制器一样,只是您在 URL 中看不到控制器的名称。

        【讨论】:

        • 如何创建索引控制器?它需要有一个动作吗?
        • 对不起,我的意思是索引操作。任何控制器都可以有一个 Index Action,它在路由中默认配置为该控制器的“家”。
        猜你喜欢
        • 2010-10-27
        • 2010-11-11
        • 2016-09-28
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        相关资源
        最近更新 更多