是否可以在js文件中写下以下行
var lst = @Html.Raw(Json.Encode(ViewBag.List));
答案 0 :(得分:1)
您不能在静态js文件中使用服务器端代码。您可以在视图中声明此全局变量,然后使用单独的javascript文件。
答案 1 :(得分:1)
您可以通过重命名来使js文件动态化,例如任何其他asp.net文件
例如filename.aspx
。那么你的moded'js'文件将是:
<%@ Page Title="" Language="C#" %>
<%
Response.ContentType = "application/x-javascript";
%>
function foo() {
var a = "<%= myVar %>";
}
您可以使用标准方式在页面中加入:
<script type="text/javascript" src="filename.aspx"></script>
答案 2 :(得分:1)
HTML帮助器只能在视图中使用,而不能在JavaScript文件中使用。 为了使工作正常,您需要将输入变量写入View以及JavaScript文件中的其余代码。因此,您的代码应类似于:
查看:
<script>
var lst = @Html.Raw(Json.Encode(ViewBag.List));
</script>
访问“ lst”的其余代码将驻留在javaScript文件中:
JS文件:
$(document).ready(function(){
// access lst here, rest of the code goes here
});
注意:不要忘记在View中包含JS文件。
答案 3 :(得分:0)
我最喜欢的解决方案是将参数作为参数:
function foo(parameter) {
var lst = parameter;
...
}
并在视图中:
<input type='button' onclick="foo('@Html.Raw(Json.Encode(ViewBag.List))');" />
您也可以使用一个对象来存储每个服务器端属性,并将其作为全局传递给您的js。在$(document).ready();
中执行此操作。关于SO已经有了一个很好的问题,对此有更多的见解。稍后将使用链接进行编辑。
此致
编辑:给this SO question读一读,你会发现更多的见解。