gpt4 book ai didi

asp.net-mvc - ASP.NET MVC路由上的斜杠

转载 作者:行者123 更新时间:2023-12-03 14:59:17 25 4
gpt4 key购买 nike

在最新的MVC预览中,我将此路由用于旧版URL:

routes.MapRoute(
"Legacy-Firefox", // Route name
"Firefox-Extension/", // URL with parameters
new { controller = "Home", action = "Firefox", id = "" } // Parameter defaults
);


问题在于这两个URL的工作:
http://example.com/Firefox-Extension
http://example.com/Firefox-Extension/

我只希望第二个工作(用于SEO)。另外,当我创建到该页面的链接时,路由引擎会给我返回一个没有尾随斜杠的URL。

这是我用来生成链接的代码:

<%= Html.ActionLink("Firefox Extension", "Firefox", "Home")%>


我相信可以通过使用HTTP处理程序执行301重定向到带有斜杠的URL来解决第一个问题。但是,我想用斜杠链接到URL,我希望不必用斜杠对版本进行硬编码。

有人知道如何强制路线使用斜杠吗?

最佳答案

如果在RouteLink上有包装器,则可以轻松解决该问题。
例如,我有一个包装方法RouteLinkEx:

public static string RouteLinkEx(this HtmlHelper helper,string text,string routeName,RouteValueDictionary rvd,object htmlAttributes)
{

UrlHelper uh = new UrlHelper(helper.ViewContext.RequestContext,helper.RouteCollection);
// Add trailing slash to the url of the link
string url = uh.RouteUrl(routeName,rvd) + "/";
TagBuilder builder = new TagBuilder("a")
{
InnerHtml = !string.IsNullOrEmpty(text) ? HttpUtility.HtmlEncode(text) : string.Empty
};
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
builder.MergeAttribute("href",url);
return builder.ToString(TagRenderMode.Normal);
//---
}


如您所见,我首先使用参数生成URL。然后我在URL的末尾添加了“ /”。然后我使用这些网址生成了完整的链接。

关于asp.net-mvc - ASP.NET MVC路由上的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com