2013-03-07 48 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