我应该只将Id或整个对象传递给MVC控制器以呈现"细节"视图?

时间:2016-07-22 05:47:34

标签: asp.net-mvc asp.net-core asp.net-core-mvc

我正在研究ASP.NET核心项目并陷入两难境地:我有一个从ajax请求(来自api控制器)填充的项目表。现在点击我要打开的单个项目详情视图 - 非常简单。

但我有两个选择:

1 - 将项目的ID传递给我的mvc"详细信息"控制器,然后从那里再次调用数据库,获取请求的对象并返回视图。

2 - 将整个JSON对象传递给我的mvc"详细信息"控制器通过@ Html.ActionLink(因为我已经在我的表中有一个),并构建视图。

选择#2看起来似乎更好,因为我节省了额外的数据库之旅并且所有操作都在客户端上进行。

但是如果可以通过这种方式(通过url传递整个对象)从所有进一步的预测中获得安全,我会犹豫不决?

如你所知,我无法注释我的"细节"带有[ChildActionOnly]的mvc控制器,所以url查询很容易编辑。

2 个答案:

答案 0 :(得分:1)

如果您的模型很大(或将来可能变大),您将无法将整个内容序列化到URL。大约2000 characters的限制。

更常见的是,将Id传递给控制器​​并在那里调用数据库以获取完整模型。然后,如果在某些时候您不再需要或想要在“索引”页面上加载整个对象模型,则无需更改“详细信息”页面的工作方式。 (良好的分离)。

答案 1 :(得分:0)

为了简单和分离,我会选择第二种选择。往返数据库的性能节省并不重要,因为我们说的是单项而非批处理或迭代,但我们有弹性和灵活性来改变/扩展。