asp.net-mvc - MVC 中使用破折号路由可选参数

标签 asp.net-mvc asp.net-mvc-routing

我做了这样的路由定义:

 routes.MapRoute("ProductSearch", "Search-{MainGroup}-{SubGroup}-{ItemType}",
   new {
    controller = "Product",
    action = "Search",
    MainGroup = "", SubGroup = "", ItemWebType = ""});

如果参数为空,则不起作用。 实际上它解析了 url,因此 Url.Action 方法解析了路径“Search-12--”,但链接不起作用,因此页面的 GET 不起作用

使用斜杠,Url.Action 方法可以生成“Search/12”

"Search/{MainGroup}/{SubGroup}/{ItemType}"

是否有可能纠正它?

我用默认的mvc项目制作了一个示例: 仅添加: 默认路由之前:

    routes.MapRoute(DefaultSearch", "Search-{MainGroup}-{Subgroup}-{ItemType}",
        new {controller = "Home",action = "About", MainGroup = "", 
              Subgroup = "", ItemType = ""});

在 Home/index.aspx 中:

<a href="<%=Url.Action("About", "Home", new {maingroup = "2", subgroup = "", itemType = ""}) %>">
    Search</a>

在 HomeController 中:

public ActionResult About(string maingroup, string subgroup, string itemtype)
{
  return View();
}

点击链接并返回 404

最佳答案

您使用什么版本?在 mvc 2 中,您可以使用 UrlParameter.Optional 作为路由的默认值。

关于asp.net-mvc - MVC 中使用破折号路由可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873333/

相关文章:

asp.net - 在 asp net core (asp net 5) 中设置身份验证

c# - MVC 4 使用 POST 方法发布不起作用(使用 GET 方法 - 有效)

c# - View 中的 IF..ELSE 语句在 ASP.NET MVC 中不受欢迎吗?

asp.net-mvc - 带有可选参数的 ASP.NET MVC 重写索引操作

asp.net-mvc - 如何检查哪个 Action 方法呈现了当前 View (从当前 View 中)?

c# - 如何将 ModelBinders 与存储在 OwinContext 中的 DbContext 一起使用?

asp.net-mvc - 如何链接到将数组作为参数的操作(RedirectToAction 和/或 ActionLink)?

asp.net-mvc - 未找到 Web Api 路由

asp.net-mvc - 存储在博客引擎数据库中的动态/可编辑MVC路由

ASP.NET MVC 路由 : How to make my MVC URL's have . aspx 扩展名?