Asp.net mvc 5 MVC属性路由添加区域查询字符串参数
我尝试过通过各种方法将Route属性添加到控制器中Asp.net mvc 5 MVC属性路由添加区域查询字符串参数,asp.net-mvc-5,asp.net-mvc-routing,Asp.net Mvc 5,Asp.net Mvc Routing,我尝试过通过各种方法将Route属性添加到控制器中 [Route("Trials/{trialId:int}/Components/{action}")] public partial class ComponentsController : Controller { public virtual ActionResult List(int trialId) { return View(); } } 或 这只是几个例子 生成的指向此控制器/操作的链接如下
[Route("Trials/{trialId:int}/Components/{action}")]
public partial class ComponentsController : Controller
{
public virtual ActionResult List(int trialId)
{
return View();
}
}
或
这只是几个例子
生成的指向此控制器/操作的链接如下所示:
我希望删除查询字符串参数。无论我如何放置带有属性的路由配置,它似乎永远不会工作
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应用查询字符串
有人能解释为什么route方法要添加Area querystring,以及我如何修复它吗?我被难住了。区域不是存储在
RouteData.Values
集合中的路由值,而是存储在RouteData.DataTokens
集合中(作为元数据)。在routedCollection
中为区域设置默认值是不正确的,因为这只应用于请求的routedData.Values
简而言之,要从生成的URL中删除区域
参数,需要将其作为映射路由
中的默认值删除
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "UnitGroups", action = "List", id = UrlParameter.Optional }
);
我今天想试一下,但还是一样。我仍然使用Area=作为查询字符串。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "UnitGroups", action = "List", id = UrlParameter.Optional }
);