作为this question的推论,我知道可以使用像var jsObject = @Html.Raw(Json.Encode(Model))
这样的技术来表示将MVC ViewModel对象强制转换为Javascript。
我假设它只能在实际.cshtml
页面上直接使用此技术。如果我想在外部.js
文件中使用此数据,该怎么办?
如果我在var jsObject
页面上实例化.cshtml
,我是否仍可以从外部Javascript文件访问此对象,还是会被视为超出范围?
答案 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
方法并不关心变量的名称。