【发布时间】:2015-09-04 16:07:01
【问题描述】:
我尝试通过各种方法将 Route 属性添加到我们的控制器。
[Route("Trials/{trialId:int}/Components/{action}")]
public partial class ComponentsController : Controller
{
public virtual ActionResult List(int trialId)
{
return View();
}
}
或者
[RoutePrefix("Trials/{trialId:int}/Components")]
[Route("{action=List}")]
public partial class ComponentsController : Controller
{
public virtual ActionResult List(int trialId)
{
return View();
}
}
只是几个例子。
生成的指向该控制器/动作的链接如下所示:
http://localhost:50077/Trials/3/Components?Area=
我正在寻找删除查询字符串参数。无论我如何放置带有属性的路由配置,它似乎都无法正常工作。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//routes.MapRoute(
// name: "TrialComponents",
// url: "Trials/{trialId}/Components/{action}/{id}",
// defaults: new {controller = "Components", action = "List", area = "", id = UrlParameter.Optional},
// constraints: new { trialId = "\\d+"}
//);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "UnitGroups", action = "List", area = "", id = UrlParameter.Optional }
);
}
}
注释掉的路由有效,并且不会将查询字符串应用于 url。
谁能解释为什么路由方法要添加区域查询字符串以及如何修复它?我被难住了。
【问题讨论】:
标签: asp.net-mvc-5 asp.net-mvc-routing