【问题标题】:routing in my mvc project is not working我的 mvc 项目中的路由不起作用
【发布时间】:2013-07-25 00:05:27
【问题描述】:

我创建了一个新的 mvc 项目。之后,我在其中添加了旧的 Web 表单内容。在我的旧 Web 表单页面或配置中,某些东西阻止了我的项目中的路由,并且 /Home/Index 不起作用。

但我真的找不到任何问题。请帮忙。

这是我的 global.asax 部分,我没有对以下默认类进行任何更改

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);

很遗憾,我没有更改上述课程中的任何内容,这是我的 registerRoutes 方法内容

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
          );
        }

以及我的网络配置部分

<compilation debug="true" targetFramework="4.5"  defaultLanguage="c#" optimizeCompilations="true">
  <assemblies>
    <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.DataVisualization.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>
    <add assembly="Microsoft.Vbe.Interop, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>

  </assemblies>

  ...

  <namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
  </namespaces>

  ...

  <modules runAllManagedModulesForAllRequests="false">
       <remove name="Session"/>
       <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
       <remove name="RequestControlModule"/>
       <add name="RequestControlModule" preCondition="managedHandler" type="RequestControlModule" />
       <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    尝试将RegisterRoute方法改为如下:

    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.MapRoute(null,
                   "{controller}/{action}",
                    new
                    {
                        controller = "Home",
                        action = "Index"    
                    }
                   );
    
                   routes.MapRoute(
                      "Default", // Route name
                       "",        // URL with parameters
                       new { controller = "Home", action = "Index" }  // Parameter defaults
                   );
        }
    

    【讨论】:

    • 除了我的方法是由VS 2012自动生成的,你声称它是错误的吗?你的回答不起作用,但你能解释一下为什么你认为这可能是一个解决方案吗?
    • 请在您的 HomeController 类中列出您的 Index 方法。上面的答案不是您需要的答案,当我们弄清楚时,我将用正确的答案替换它。它应该看起来像这样: public class HomeController : Controller { public ViewResult Index() { return View(); } }
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多