Asp.net mvc ASP.NET MVC中的路由问题
我有一个ASP.NETMVC站点在一个经典的ASP站点下。MVC站点是: 路线Asp.net mvc ASP.NET MVC中的路由问题,asp.net-mvc,routes,Asp.net Mvc,Routes,我有一个ASP.NETMVC站点在一个经典的ASP站点下。MVC站点是: 路线 干得好。然而,路线: 没有。点击它,看看我得到了什么。如果我包括行动: 它起作用了 当我在家里通过在VS中按F5来运行它时,它只需执行(即,未指定任何操作)即可正常工作。以下是我的路线: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}
干得好。然而,路线: 没有。点击它,看看我得到了什么。如果我包括行动: 它起作用了 当我在家里通过在VS中按F5来运行它时,它只需执行(即,未指定任何操作)即可正常工作。以下是我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Terms",
"{controller}/{id}",
new { controller = "Terms", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"ThankYou",
"{controller}/{action}/{email}/{id}"
);
}
www.inrix.com/traffic maps to HomeController(索引操作)
我希望www.inrix.com/traffic/support映射到SupportController,索引操作
“支援”路线是怎么回事
附加代码:
控制器:
using System.Web.Mvc;
namespace InrixTraffic.Controllers
{
public class SupportController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
视图:
您是否有具有索引操作的交通调度员?如果是这样,我认为您需要设置如下所示的路线:
routes.MapRoute(
"Terms",
"traffic/support",
new { controller = "Traffic", action = "Index" }
);
在RegisterRoutes方法中,将此路由置于术语路由之上
编辑
我会这样设置我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Support",
"traffic/support",
new { controller = "Support", action = "Index" }
);
// don't know why you need the id at the end
routes.MapRoute(
"Terms",
"terms",
new { controller = "Terms", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
// why does this route not have any defaults defined?
routes.MapRoute(
"ThankYou",
"{controller}/{action}/{email}/{id}"
);
}
@编辑:
我认为您有一个文件路径(可能是文件夹)具有相同的url。我是说,一个名为“支持”的文件夹。
要使用路由路径覆盖文件路径,您需要添加:
routes.RouteExistingFiles = true;
关于F5在本地主机上运行调试,您是正确的。有关您的问题的澄清,请参见文章末尾。@birdus,请检查我的更新答案,并删除以前的评论,以简化讨论。希望能成功,就这样!事实证明,我并不真的需要那个目录,所以我只是删除了它并修复了它。谢谢流量实际上流向HomeController。SupportController.Index是我希望此URL的位置。我在问题的底部澄清了这一点。因此,您希望添加此路由,而不是
routes.MapRoute(“术语”、“流量/支持”,new{controller=“support”,action=“Index”})代码>您的交通/支持
路线无法匹配的原因是您的默认路线将查找具有“支持”操作的交通控制器。您需要在RegisterRoutes方法中将上述路由置于默认路由之前。感谢您提供有关路由的基本帮助。术语的Id是因为可以有很多种语言,我在这里输入类似于“de”的语言(de=德语)。这是我遇到的另一个问题,我还没有得到答案。看起来我甚至不需要支援路线。我把它移走了,路线很好。我喜欢更简单的。看起来它使用了默认的路由。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Support",
"traffic/support",
new { controller = "Support", action = "Index" }
);
// don't know why you need the id at the end
routes.MapRoute(
"Terms",
"terms",
new { controller = "Terms", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
// why does this route not have any defaults defined?
routes.MapRoute(
"ThankYou",
"{controller}/{action}/{email}/{id}"
);
}
routes.RouteExistingFiles = true;