在我的代码中使用JavaScriptResult

时间:2012-01-09 08:37:08

标签: javascript asp.net-mvc-3 asp.net-mvc-2

我一直在想我是否应该使用JavaScriptResult? 我已经读过几篇关于此的文章,而且人们的意见相互矛盾。

我可以看到好处:

  1. 代码在控制器中呈现,因此我可以与我的数据源进行交互,更难以计算和逻辑。
  2. 但是使用渲染的jasonresult基于页面呈现的JS似乎是更好的选择。
  3. 不确定编程模式:

    控制器中的JavaScript渲染如何适合模型视图控制器

1 个答案:

答案 0 :(得分:1)

MVC是关注分离的设计模式。我经常听到JavaScriptResult是要避免的,因为它打破了原理。在我看来,你应该记住,MVC为你提供了强大的工具,但这取决于你,你会用它做什么。 JavaScript XHR / Ajax不仅可以提供GUI渲染,还应该考虑使用。嗯,事实是即使是最简单的方法也可能会错过,但这并不意味着我们不应该使用它们。)

当然,在您的页面上使用JavaScript,并使用JSON提供它是完全正常和可预见的,在大多数情况下它就足够了。有时候,你需要选择你想要100%符合MVC模式或DRY原则/其他良好做法。我认为最好在特定情况下做你认为有意义的事情。

让我们来看看WebGrid帮助器的GetContainerUpdateScript方法http://msdn.microsoft.com/en-us/library/system.web.helpers.webgrid.getcontainerupdatescript(v=vs.99).aspx它提供了jquery oneliner来更新你的webgrid数据。在这种情况下,它都在View中,但类似的代码可能是控制器的一部分 - 假设一个脚本根据一些唯一标识符(例如sessionID)发出大量POST请求。

在我看来,除了在视图和控制器之间踩一条细红线(有时稍微穿过它)以避免其他问题,使代码更清晰,更可重用和可维护之外,还有更糟糕的事情。