假设我需要创建一个搜索页面。在那个页面上有:
- 具有许多搜索参数(param1、param2、...、paramN)的复杂搜索过滤器
- 结果项目列表
- 寻呼机
- 布局切换链接(列表或表格视图)
我将视图模型从我的操作传递给视图,其中包含有关搜索参数的当前值(来自 url)和一些不直接来自 url 的“猜测”参数的信息(例如,如果用户没有指定区域,我们可以猜测它来自他的 ip)。
现在,对于寻呼机中的每个链接,我必须编写这样的代码
<a href="@Url.Action(null, new { page = n, param1, param2, ..., paramN, region })">...
对于布局切换链接,我必须编写类似但不同的代码:
<a href="@Url.Action(null, new { page = currentPage, mode = DisplayModes.List, param1, param2, ..., paramN, region })">list</a>
<a href="@Url.Action(null, new { page = currentPage, mode = DisplayModes.Table, param1, param2, ..., paramN, region })">table</a>
我不喜欢的是有多少代码泄露给查看。它很难维护,也很难测试。
所以我在徘徊是为如此复杂的页面构建url是视图的责任还是动作的责任?