ASP.net MVC中的所有路由都应遵循“只有斜杠,没有QueryString”的理念吗?
我正在开发一个Wiki软件,所以我有像
这样的路线/{pageTitle}
/{pageTitle/Edit
/{pageTitle/History
等。对于所有操作,但如果我想控制Action的行为怎么办?有点像
/{pageTitle}?noredirect=true
好还是被认为是不好的做法?如果是后者,还有更好的选择吗?我应该创建一个单独的路线
/{pageTitle}/NoRedirect
代替?
我认为它很干净,但是我再也没有写过一个复杂的MVC应用程序,它需要在之前将选项传递给动作:)
答案 0 :(得分:9)
我相信对此没有明确的答案。
但对我来说,拥有控制器和放大器感觉更自然。 URL左侧的操作相关部分,并在QueryString中包含“可选”参数。
虽然很清楚;
/{pageTitle}
会显示该文章,/{pageTitle}/Edit
将编辑artice,/{pageTitle}/History
将显示该artice的历史 /{pageTitle}/NoRedirect
并没有真正响铃
但更明显的是/{pageTitle}?noredirect=true
修改了行为的行为。
所以我会在你的情况下使用/{pageTitle}?noredirect=true
。