我是 mvc 的新手....只是在学习。人们registerclientscript or registerstartup
在 asp.net web 表单中使用从服务器端方法在客户端发出 JavaScript。所以我想知道我们可以从客户端控制器的动作方法发出多少种 JavaScript。如果可能的话,请与代码片段讨论所有方式以便更好地理解。谢谢
1 回答
您不应该从控制器发出 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
只是模型上的一个属性,它根据一些内部逻辑返回一个布尔值。(您可以直接在视图本身中定义逻辑,但通常最好在模型上保留尽可能多的逻辑,并让视图直接绑定到模型公开的值。)