我们有多少方法可以从客户端的控制器发出javascript

时间:2013-07-18 13:14:53

标签: asp.net-mvc

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

1 个答案:

答案 0 :(得分:4)

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

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

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

我甚至会说WebForms中的RegisterStartupScript首先是一个糟糕的设计选择。即使在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为真,那么包含JavaScript的内容只会呈现给浏览器。所以SomeCondition只是模型上的一个属性,它根据一些内部逻辑返回一个布尔值。 (你可以直接在视图中定义逻辑,但一般情况下,最好尽可能多地保留模型,并让视图直接绑定到模型公开的值。)< / p>