我有四条路线定义如下:
//Project list with page number
routes.MapRoute(
"Filtered projects 1",
"Projects/All/{page}",
new { controller = "Projects", action = "All", page = UrlParameter.Optional }
);
//Project list with page number and filtering by region
routes.MapRoute(
"Filtered projects 2",
"Projects/All/Regions/{regions}/{page}",
new { controller = "Projects", action = "All", regions = UrlParameter.Optional, page = UrlParameter.Optional}
);
//Project list with page number and filtering by subject
routes.MapRoute(
"Filtered projects 3",
"Projects/All/Subjects/{subjects}/{page}",
new { controller = "Projects", action = "All", subjects = UrlParameter.Optional, page = UrlParameter.Optional }
);
//Project list with page number and filtering by region and subject
routes.MapRoute(
"Filtered projects 4",
"Projects/All/Regions/{regions}/Subjects/{subjects}/{page}",
new { controller = "Projects", action = "All", regions = UrlParameter.Optional, subjects = UrlParameter.Optional, page = UrlParameter.Optional }
);
这允许我有一个分页列表,也可以按区域或主题过滤。
我想与主题建立一系列链接,这样我就可以点击一个主题,它会根据需要返回上面的一个网址,其中包含/ Subjects / SubjectName 位根据需要附加。我还想让用户点击几个链接,这些链接应该给上面的网址带/ Subjects / subject1 _ * subject2 * _ subject3 。
我无法弄清楚如何做到这一点。我已经在局部视图中显示了主题列表。当我生成超链接时,如何访问网址并修改(或根据需要添加或删除)/ Subjects / * 部分?
查询字符串很容易,因为它们很容易被打成价值巴黎,但是这些漂亮的网址似乎很难......任何提示?
更新:我忘了添加我想在同一个控制器上使用不同操作的过滤方法。不确定这是否重要,但我认为我是准确的。
更新2:我认为我的问题不够清楚......
我要做的是在部分视图中为主视图中的链接生成每个主题的链接。问题在于链接需要符合上述路线之一。
说,我从/ localhost / Projects / All调用此函数,并希望按subject1排序,我想获取urls说/ localhost / Projects / All / Subjects / subject1。如果我从/ localhost / Projects / Search / Something / 10(即搜索“Something”的搜索结果的第10页)调用了这个,我在列表中没有这条路线,但它正在开发中,我想要网址如localhost / Projects / Search / Something / Subjects / Subject1 / 10。或者从/ localhost / Projects / All / 4到localhost / Projects / All / Subjects / subject1 / 4。
我可以轻松地将/ Subjects / Subject1位附加到URL,但之后又不再符合我的路由...... 换句话说,我如何从我的网址中提取各种位,修改它们然后再将它们拼接在一起?
这可能吗?或者我应该忘记漂亮并使用查询字符串?
答案 0 :(得分:0)
Url.Action("All","Projects", new{subjects = "some subject"})
会为刚刚传入主题的人提供正确的公式化网址,更改匿名对象中的参数以将其更改为适当的
答案 1 :(得分:0)
使用ViewContext.RouteData获取当前路线信息。