0

我有一个使用换出 JavaScript 的视图

@section JavaScript {
    <script type="text/javascript" src="@Url.Content("/Scripts/Index.js")" />
}

我知道我可以直接在我的视图中的 JavaScript 部分中调用 Razor 命令,如下所示:

<script type="text/javascript">
    var someVariable = '@(Model.Name)'
</script>

现在,我需要调用一个自定义 HtmlHelperExtension 方法,从我换出的 .js 文件中返回一个字符串值,但是当我这样写下来时:

var someVariable = '@(Html.someHtmlFunction())'

'@(Html.someHtmlFunction())' 部分被解释为字符串本身,我的 someVariable 看起来像“@(Html.someHtmlFunction())”而不是“someReturnValue”。

是否可以从换出的 JavaScript 文件中调用 Razor 命令,还是必须在视图中包含 JavaScript?

4

1 回答 1

1

不,您不能在 .js 文件中执行此操作。在这些场景中,我通常会在页面上设置 JavaScript 变量并在 .js 文件中引用它。即使用global变量:

在 .cshtml 中:

var someVariable = '@(Html.someHtmlFunction())' // make sure this is before .js
@section JavaScript {
    <script type="text/javascript" src="@Url.Content("/Scripts/Index.js")" />
}

在 Index.js 中:

console.log(someVariable);
于 2013-03-07T12:14:10.517 回答