asp.net-mvc - 路由中第一个参数的默认值

标签 asp.net-mvc routes

我有一个路线,可以按流派、标签、风格等显示多语言网站的绘画作品。

看起来不错,类似于

en/Genre/allegorical-painting

但是,客户想要的是排除英语中的 en 并只得到

Genre/allegorical-painting

我默认使用“en”,但它始终呈现......当我手动删除它时,出现 404 错误。这是我的规则定义:

var searchActionsConstraint = new RouteValueDictionary { { "action", "Style|Tag|Painting-School|Art-Movement|Artist-by-Genre|Gallery|Search|Genre|Technique|Material" }, {"lang", "en|es|fr"} };
DomainRoute wikiSearchRoute = new Route("{lang}/{action}/{SearchTerm}/{CurrentPage}/{SearchCategory}/{searchTextMode}",
new RouteValueDictionary(new
{
 lang = "en",
 controller = "WikiSearch",
 action = "",
 SearchTerm = "Any",
 CurrentPage = "1",
 SearchCategory = "Painting",
 searchTextMode = "SearchTags"
}), searchActionsConstraint, new DomainRouteHandler());

RouteTable.Routes.Add("WikiSearchRoute", wikiSearchRoute);

一般来说,如何在 MVC 中第一次隐藏默认路由参数?

最佳答案

您可以添加第二条不带语言的路由,并为其指定默认值

DomainRoute wikiSearchRouteEn = new Route("{action}/{SearchTerm}/{CurrentPage}/{SearchCategory}/{searchTextMode}",
new RouteValueDictionary(new
{
 lang = "en",
 controller = "WikiSearch",
 action = "",
 SearchTerm = "Any",
 CurrentPage = "1",
 SearchCategory = "Painting",
 searchTextMode = "SearchTags"
}), searchActionsConstraint, new DomainRouteHandler());

RouteTable.Routes.Add("WikiSearchRouteEn", wikiSearchRouteEn);

关于asp.net-mvc - 路由中第一个参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245566/

相关文章:

c# - 使用模型将数组从 Controller 传递到 View

asp.net-mvc - 将 ASP.Net MVC 与 WebForms 结合起来

asp.net-mvc - 剑道网格中的 HTML 新行

node.js - 将 Passportjs 传递到 ES6 中的单个路由文件

split - Rails 4 : split routes. rb 成多个较小的文件

php - CodeIgniter - 如何删除 url 路由中的类名

javascript - 如何以 Angular 将参数从先前状态传递到新状态?

android - 在android中绘制当前位置到另一个位置之间的路线?

javascript - AJAX Get 向 ActionResult 发送 null 变量

c# - 在 MVC 中显示标准数据表