【发布时间】:2014-02-05 13:31:58
【问题描述】:
我正在为我的网站使用 ASP.Net 网络表单路由,但我想让它更具结构性并隐藏所有具有正确结构的查询字符串 ID,例如 Language/Category/PageName-Title
例如:www.abc.com/en/sports/cricket-world-cup
但是以我目前的路由技术,我可以让它像
www.abc.com/en/1/13/cricket-world-cup
domain/english-folder/language-id/page-id/page-title
我怎样才能使它更结构化为`www.abc.com/en/sports/cricket-world-cup
由于我的查询字符串很少,所以我这样设计它
//For Page.aspx
routes.MapPageRoute("Page_Route", "en/page/{LID}/{PID}/{PageName}", "~/en/Page.aspx", false,
new RouteValueDictionary {
{ "LID", "0"},
{ "PID", "0" },
{ "PageName", "Page-not-found" }},
new RouteValueDictionary {
{ "LID", "[0-9]{1,8}" },
{ "PID", "[0-9]{1,8}" },
});
上述路由的结果让我得到这样的友好 URLwww.abc.com/en/1/13/cricket-world-cup
但我想像示例中的那样进一步构建 URL。
www.abc.com/en/sports/cricket-world-cup
示例:我发现的这个网址更结构化/
http://www.thenational.ae/news/world/europe/turkey-providing-jobs-a-future-for-more-greeks
如果他们将querystrings 作为隐藏字段传递,我如何实现相同的结构。请建议此类网址的最佳方法。
另一个例子是http://mashreqbank.com/uae/en/corporate/lending/trade-finance.aspx
他们正在使用 asp.net,但我不确定它是 ASP.Net MVC 还是 ASP.Net webform。
我已经为这种路由苦苦挣扎了很长时间,甚至我找不到一个可以考虑多个查询字符串的完整示例,因为大多数示例都基于一个查询字符串。
非常感谢编码专家提供的示例帮助。
更新: 让我们考虑这个表,我用它来存储页面名称、标题、处理程序、语言区域等。这只是一个演示表,与我为示例结构化 url 引用的实际网站并不相似。我什至不确定他们是否使用 URL 路由进行操作,或者这些是实际的物理文件夹和文件,例如旧式网站,您可以在其中创建实际文件夹并将文件放置在其等中。
Page_ID Page_Name Page_Title Page_Handler Parent_Page_ID Language_ID Region_ID
1 Home Home index.aspx 0 1 uae
2 Personal Personal index.aspx 0 1 uae
3 Accounts & Deposits Accounts & Deposits index.aspx 2 1 uae
4 Current Account Current Account current-account.aspx 3 1 uae
5 Current Gold Accounts gold Account gold-account.aspx 3 1 uae
6 Easy Saver Easy Saver Account saver-account.aspx 3 1 uae
7 Fixed Deposits Fixed Account fixed-account.aspx 3 1 uae
8 Loans Loans index.aspx 2 1 uae
9 Personal Loans Personal Loans index.aspx 8 1 uae
10 car Loans car Loans car-loan.aspx 8 1 uae
上述结构的网站示例http://mashreqbank.com/
如果页面设计相同,我们可以使用通用页面处理程序这是我假设让我们说page.aspx,
请感觉对结构和数据进行更改以达到预期的结果。
【问题讨论】: