将MVC ViewModel强制转换为外部.js文件中的Javascript对象
作为对的推论,我知道可以使用将MVC ViewModel强制转换为外部.js文件中的Javascript对象,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,作为对的推论,我知道可以使用var-jsObject=@Html.Raw(Json.Encode(Model))等技术将MVC ViewModel对象表示为Javascript 我假设只能在实际的.cshtml页面上直接使用此技术。如果我想将这些数据保存在外部.js文件中,该怎么办 如果我在.cshtml页面上实例化了var jsObject,我仍然可以从外部Javascript文件访问此对象,还是认为它超出了范围?您可以从Javascript文件中访问生成的jsObject。为了使其不超出范围
var-jsObject=@Html.Raw(Json.Encode(Model))
等技术将MVC ViewModel对象表示为Javascript
我假设只能在实际的.cshtml
页面上直接使用此技术。如果我想将这些数据保存在外部.js
文件中,该怎么办
如果我在
.cshtml
页面上实例化了var jsObject
,我仍然可以从外部Javascript文件访问此对象,还是认为它超出了范围?您可以从Javascript文件中访问生成的jsObject
。为了使其不超出范围,您需要将其视为全局:
在您的“.cshtml”中:
var jsObject = @Html.Raw(Json.Encode(Model))
<script src="/path/to/jsFile.js">
请注意,由于您没有将变量传递给jsFile.js
中的方法,jsFile.js
访问它的唯一方法是知道您在.cshtml
中给它取了什么名称。这使得您的代码非常脆弱。
另一种更好的方法是将变量传递给JavaScript函数
在.cshtml
中:
<script src="/path/to/jsFile.js">
var jsObject = @Html.Raw(Json.Encode(Model))
myProcessor(jsObject)
var jsObject=@Html.Raw(Json.Encode(模型))
myProcessor(jsObject)
使用这种方法,
myProcessor
方法不关心变量的名称。使用Create Action并使用jQuery ajax调用它。@Brij我正在寻找一种方法来实现这一点,而无需再次往返服务器。另外,RazorJS看起来没有得到维护(它的网站已经关闭),我也不想在我的Javascript文件中使用C风格的语法
<script src="/path/to/jsFile.js">
var jsObject = @Html.Raw(Json.Encode(Model))
myProcessor(jsObject)