ASP.NET路由:格式化URL字符串

时间:2012-04-11 04:26:53

标签: asp.net routing url-routing

我已在我的项目(新闻网站)中成功实施了路由功能:

 Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.MapPageRoute("ndetails", "news/{title}/{id}/", "~/newsdetail.aspx")
 End Sub

我设置了这样的URL(数据绑定到转发器):

href="<%# Page.GetRouteUrl("ndetails", new with { .title= Server.UrlEncode(Eval("Title")), .id= Eval("NewsID")})%>"

生成的网址如下:

/this%20is%20a%20news%20item/89

如上所示,URL部分难以阅读,我希望它像:

/this_is_a_news_item/89

我想过去换一个替换功能。但是,由于创建新闻的用户可能会输入任何字符串,因此我必须考虑可能需要替换的所有其他字符。

我只是想从一位经验丰富的开发人员那里了解,是否需要使用长替换功能,或者是否有另一种解决方案可以在此路由方案中格式化我的URL。

非常感谢提前

1 个答案:

答案 0 :(得分:0)

AFAIK框架中没有内置的功能,使url“漂亮”。你必须实现自己的URL重写标题。

在保存实体时,只需使用一个功能来替换你需要的功能(''带'_'或示例),然后使用UrlEncode。 您也可以使用正则表达式一次性完成替换。