代码之家  ›  专栏  ›  技术社区  ›  Brian Moeskau

ASP.NET MVC路由-重定向到ASPX?

  •  0
  • Brian Moeskau  · 技术社区  · 16 年前

    这似乎很容易,但出于某种原因,我运气不好。我正在将现有的webforms应用程序迁移到mvc,因此现在我需要保持站点的根目录指向现有的aspx页面,并且只将路由应用于命名路由。以下是我的资料:

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
    
            RouteTable.Routes.Add(
                "Root",
                new Route("", new DefaultRouteHandler())
            );
    
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Calendar2", action = "Index", id = "" }  // Parameter defaults
            );
        }
    

    因此,应忽略ASPX页,并且默认根URL应由此处理程序处理:

    public class DefaultRouteHandler : IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
                    "~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler;
        }
    }
    

    这似乎可行,但Ypod给出的结果是:

    具有相同ID的多个控件 找到了“页面”。跟踪需要 控件具有唯一的ID。

    这似乎意味着页面被渲染了两次。如果我直接输入仪表板页面的URL,它就可以正常工作(没有路由,没有错误)。我不知道为什么处理程序代码会做任何不同的事情。

    底线——我想简单地将根URL路径重定向到我选择的ASPX——有人能透露一些信息吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Arthis    16 年前

    我不太明白你的问题,可能是我不够熟练。无论如何,我会尝试…;)

    如果要从根路径重定向,为什么不使用来自IIS的默认文档,例如将其放到index.aspx,然后在此页中添加响应。重定向到要重定向到的页?

        2
  •  0
  •   Brian Moeskau    16 年前

    嗯,嗯。所以我的浏览器因为一些不相关的原因崩溃了,现在我重新启动了它,上面的代码看起来像预期的那样工作得很好。我完全不明白服务器端代码由于浏览器重新启动(显然有些东西缓存错误,我猜),现在的行为会有什么不同,但这似乎是一个没有问题的问题。

    编辑 :嗯,这实际上仍然是一个问题——不确定它以前为什么起作用,但它有点随机。归根结底,在某些情况下,MVC似乎无法很好地与trace.axd解析器配合使用,否则将产生完全有效的标记。我真的没有一个很好的解释,但是禁用web.config中的跟踪会绕过这个错误。就我目前的目的而言,这已经足够好了,但我希望听到其他人的更好的解释…

    推荐文章