如何在js文件中编写@ Html.Raw

时间:2011-11-08 06:52:05

标签: javascript asp.net-mvc

是否可以在js文件中写下以下行

var lst = @Html.Raw(Json.Encode(ViewBag.List));

4 个答案:

答案 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读一读,你会发现更多的见解。