0

我是 mvc 的新手....只是在学习。人们registerclientscript or registerstartup在 asp.net web 表单中使用从服务器端方法在客户端发出 JavaScript。所以我想知道我们可以从客户端控制器的动作方法发出多少种 JavaScript。如果可能的话,请与代码片段讨论所有方式以便更好地理解。谢谢

4

1 回答 1

4

您不应该从控制器发出 JavaScript。JavaScript 从服务器的角度来看是一个 UI 绑定的概念,属于视图。

您可以将其直接放在视图本身中,也可以放在视图.js引用的单独文件中。(或布局,如果它应该在许多视图上。)

从控制器发出 JavaScript 将控制器与视图紧密耦合,使用 ASP.NET MVC 框架(或通常的 MVC 模式,实际上)的主要原因之一是减少代码和表示之间的耦合。

我什至会说,RegisterStartupScript在 WebForms 中,首先往往是一个糟糕的设计选择。即使在 WebForms 中,客户端 UI 绑定的关注点也属于.js页面(或母版页)引用的页面或资源文件(在本例中为文件)。客户端代码不应被服务器端结构不必要地模糊。

编辑:根据您添加到此答案的评论,如果您希望根据服务器端逻辑有条件地显示/隐藏 JavaScript 块,那么您仍然可以在视图中执行此操作。例如,您的视图可能是这样的:

<!-- some HTML and other things up here -->
@if(Model.SomeCondition)
{
    <script type="text/javascript" src="someJSFile.js"></script>
}
<!-- some HTML and other things down here -->

SomeCondition在这种情况下,仅当模型为 true时,包含的 JavaScript 才会呈现给浏览器。所以SomeCondition只是模型上的一个属性,它根据一些内部逻辑返回一个布尔值。(您可以直接在视图本身中定义逻辑,但通常最好在模型上保留尽可能多的逻辑,并让视图直接绑定到模型公开的值。)

于 2013-07-18T13:21:07.043 回答