将MVC ViewModel转换为外部.js文件中的Javascript对象

时间:2016-04-05 15:32:54

标签: javascript asp.net-mvc razor

作为this question的推论,我知道可以使用像var jsObject = @Html.Raw(Json.Encode(Model))这样的技术来表示将MVC ViewModel对象强制转换为Javascript。

我假设它只能在实际.cshtml页面上直接使用此技术。如果我想在外部.js文件中使用此数据,该怎么办?

如果我在var jsObject页面上实例化.cshtml,我是否仍可以从外部Javascript文件访问此对象,还是会被视为超出范围?

1 个答案:

答案 0 :(得分:3)

您可以在javascript文件中访问生成的jsObject。为了使它不超出范围,您需要将其视为全局:

在你的`.cshtml'中:

var jsObject = @Html.Raw(Json.Encode(Model))
<script src="/path/to/jsFile.js">

jsFile.js

if(jsObject)
{
 // do whatever you need
}

请注意,由于您未将变量传递给jsFile.js中的方法,因此jsFile.js访问它的唯一方法是知道您在.cshtml中给出的名称}。这使您的代码非常脆弱。 另一种更好的方法是将变量传递给JavaScript函数。

.cshtml

<script src="/path/to/jsFile.js">

var jsObject = @Html.Raw(Json.Encode(Model))
myProcessor(jsObject)

使用这种方法,myProcessor方法并不关心变量的名称。