Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MVC ViewModel强制转换为外部.js文件中的Javascript对象_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

将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)