我现在正在进行路由,以便在地址栏上更方便地阅读网址。
例如,如果基本网址是: ... / Affaire / SearchAffaires?OnlyFavorite = True
我添加了以下路线:
routes.MapRoute(
"Search Affaire Only Favorite", // Route name
"Affaire/SearchAffaires/OnlyFavorite", // URL with parameters
new { controller = "Affaire",
action = "SearchAffaires",
OnlyFavorite = true } // Parameter defaults
);
网址现在显示如下: ... / Affaire / SearchAffaires / OnlyFavorite
到目前为止,对我来说真好。
另一个例子,如果基本网址是: ... / Affaire / SearchAffaires?IdStatus = 1
使用以下状态表:
1 =打开/ 2 =关闭/ 3 =取消
我如何获得这样的网址: ... / Affaire / SearchAffaires / Open ?
答案 0 :(得分:1)
您可以编写自定义路线:
public class SearchRoute : Route
{
public SearchRoute()
: base(
"Affaire/SearchAffaires/{searchToken}",
new RouteValueDictionary(new { controller = "Affaire", action = "SearchAffaires" }),
new MvcRouteHandler()
)
{ }
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var rd = base.GetRouteData(httpContext);
if (rd == null)
{
return null;
}
var searchToken = rd.Values["searchToken"] as string;
if (string.IsNullOrEmpty(searchToken))
{
return rd;
}
if (string.Equals("OnlyFavorite", searchToken, StringComparison.OrdinalIgnoreCase))
{
rd.Values["onlyFavorite"] = true;
}
var statuses = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "open", "1" },
{ "close", "2" },
{ "cancelled", "3" },
};
string idStatus;
if (statuses.TryGetValue(searchToken, out idStatus))
{
rd.Values["idStatus"] = idStatus;
}
return rd;
}
}
你会这样注册:
routes.Add("Search Affaires", new SearchRoute());
以下是这将如何运作:
Affaire/SearchAffaires/OnlyFavorite
将路由到SearchAffaires
控制器的Affaire
操作并传递onlyFavorite=true
参数。Affaire/SearchAffaires/open
将路由到SearchAffaires
控制器的Affaire
操作并传递idStatus=1
参数。 close
和cancelled
相同。