0

我已经在我的第一个主要的 ASP.NET MVC 应用程序(加上很多 jQuery)上工作了一个月左右,我对它非常满意。我有一个看起来像这样的页面。(实际数据已更改以保护无辜者。)

<div id="main"></div>
<div id="movies"></div>
<div id="actors"></div>
<div id="actor-ratings"></div>
<div id="ratings-comments"></div>

电影 div 包含一个可供选择的电影表。演员、演员评级和评级评论 div 在这一点上都隐藏了。单击电影时,我有一个 jQuery live() 事件来获取单击、发布到操作、获取数据,然后是一个回调函数来获取数据并将其放置在模式弹出窗口中。(我认为我的命令是正确的,如果我在任何地方做错了,请随时告诉我。)

由于演员、演员评级和评级评论都可能需要加载到一个页面中,因此我的控制器最终会执行一个巨大的操作来加载所有这些数据。另外,评级评论 div 可能会关闭演员评级模式并以新的模式打开自己。最重要的是,我想实现 jQuery 地址插件以允许后退按钮返回到以前打开的模式。

变得相当复杂。我应该为每个 div 使用部分视图吗?我应该有一个控制器,每个控制器都有动作吗?或者每个部分视图/div的控制器?部分 div 似乎是要走的路,但我想在我跳入并分解我的代码之前我正在寻找一些指导。任何意见,将不胜感激。

编辑:另外,我的演员评级部分视图可能需要来自演员部分视图的一些数据。我也只是在演员数据中加载了我的 ActorRatings 控制器动作吗?(我将强类型视图模型传递给视图。)

4

2 回答 2

1

你如何分解你的代码并不一定很重要,只要它始终如一地将应用程序的逻辑不同部分分开即可。

对于由许多密切相关的局部视图驱动的页面,我很想将操作方法​​放在单个控制器中。但是,如果您希望制作一个非常丰富的 AJAX 驱动页面,那么您可能会受益于将不同的功能拆分为单独的控制器。

从操作方法返回部分视图可能是最可维护和最灵活的解决方案,但返回 JSON 将使用最少的带宽。对于您所描述的内容,我很想返回部分视图。

如果没有更多细节,很难评论 Actors 和 ActorRatings 之间的共享数据。Actors 操作方法无法获取所需的所有细节,还是由于调用了 ActorRatings 方法而正在更新?

于 2011-04-05T21:27:45.470 回答
1

就像您描述的那样,在我需要处理弹出窗口的动态内容的情况下,使用单独的操作返回部分视图是可行的方法。这些动作可以映射到单个控制器,也可以根据内容分布在不同的控制器之间——这更多地取决于你在这个视图之外还有什么。部分视图允许您使用一个实际的 jquery 对话框,我只需在其中加载我当前感兴趣的表单。然后,您可以使用 jQuery serialize() 准备好模型并发送到保存操作(如果需要异步完成)。关于演员评分部分:有两种方法 - 将数据传递给控制器​​操作或使用 js 修改您收到的部分视图以符合您的喜好。如果修改更严重或需要比视图上更多的数据,则应使用第一种方法。此外,如果有一些规则要遵循——你不想在 js 中放太多的东西。当只需要对部分进行微调并且您不想发送往返数据时,第二种方法是可以的 - 但这可能会让人头疼。

于 2011-04-05T21:34:56.260 回答