【发布时间】:2010-03-30 06:47:39
【问题描述】:
这似乎应该很容易,但由于某种原因我没有运气。我正在将现有的 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 的多个控件 '__Page' 被发现。跟踪要求 该控件具有唯一的 ID。
这似乎意味着页面以某种方式被渲染了两次。如果我只是直接在我的仪表板页面中输入 url,它就可以正常工作(没有路由,没有错误)。我不知道为什么处理程序代码会做不同的事情。
底线——我想简单地将根 url 路径重定向到我选择的 aspx——任何人都可以解释一下吗?
【问题讨论】:
标签: asp.net asp.net-mvc url-routing asp.net-mvc-routing