0

我有一个 ASP.NET MVC Web 应用程序,我希望在一个页面上显示一个项目表,其中包含指向该项目详细信息的链接。很基本。但是,我希望在列表中显示的项目都是公共基本类型的子类,因此链接需要引用不同的控制器操作。

所以,我的问题是:我应该在哪里/如何构建这些链接(参见下面的示例)?

我已经可以通过多种方式实现我的目标(例如,在将业务对象映射到视图模型时构建路由,在视图模型中使用标志或魔术字符串,具有选择适当视图的单个“基本”控制器操作等)但似乎没有一个特别“干净”,所以这更多的是关于最佳实践的问题,而不是机制问题。

例如,假设我的“作业”表如下所示:

Id   <OtherCommonFields>  Type    Name           Link
1    <some data>          Event   Some event     /event/1
4    <some data>          Task    Some task      /task/4
3    <some data>          Event   Another event  /event/3
2    <some data>          Task    Another task   /task/2
5    <some data>          Event   One more event /event/5

其中“任务”和“事件”都是“分配”的子类。

4

1 回答 1

0

我想说的简短版本是创建一个名为 AssignmentLink 的新 actionlink 扩展方法,您可以在其中传递 id 和类型。

在 assignmentlink 方法中,切换类型并以 actionlink 的形式返回正确的 url。这样,如果您添加不同类型的任务或其他任何内容,您就可以在一个中央助手中控制所有内容。

在之前的一个 mvc 应用中,超链接给我们带来了很多麻烦。当我们重命名控制器,或将控制器移动到新区域等时,更新对该控制器的所有引用需要很长时间。所以在我们最近的项目中,我们将所有超链接逻辑包装到一个名为“linkdata”的对象中

然后,我们为我们的链接数据对象创建了扩展,在帮助程序或扩展中具有任何逻辑。

http://codingsmith.co.za/extending-the-actionlink-helper-in-mvc/如果你有兴趣,但你可以在你的例子中少得多,只需一个简单的扩展就可以了。

于 2012-04-16T12:29:38.873 回答