2013-03-07 50 views
0

我有一个视图中使用交换出去的JavaScript在MVC4剃刀标签交换出去的JavaScript

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

我知道我可以调用剃刀在JavaScript部分直接在我查看命令,就像这样:

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

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

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

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

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

回答

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); 
+0

感谢。我会试试这个。 – 2013-03-07 12:17:40

+0

这工作,非常感谢 – 2013-03-07 12:47:42