ASP.NET MVC路由 - 重定向到ASPX?
-
23-09-2019 - |
题
这似乎应该很容易,但是由于某种原因,我没有运气。我正在将现有的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页面,并且该处理程序应处理默认的根网址:
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 - 有人可以散发一些光吗?
解决方案 2
嗯。因此,我的浏览器出于某种无关的原因崩溃了,现在我已经重新启动了它,上面的代码似乎按预期的是完美地工作。由于浏览器重新启动,我对现在的服务器端代码的作用方式完全不同(显然我猜是某种程度上被错误地缓存了),但是看来这是一个非问题。
编辑: :嗯,这实际上仍然是一个问题 - 不确定为什么它以前起作用,但是有点随机。最重要的是,MVC似乎与Trace.AXD解析器在某些情况下产生完美有效的标记。我真的没有很好的解释,但是禁用Web.config绕过错误的跟踪。就我的目的而言,这已经足够好了,但是我很想听听别人的更好解释...
其他提示
我不太了解您的问题,可能我的熟练程度不够。无论如何我会尝试...;)
如果要从根路径重定向,为什么不使用IIS的默认文档,将其放在index.aspx中,然后在此页面中添加响应。将您重定向到的页面retlect。
不隶属于 StackOverflow