2016-09-22 22 views
5

由於顯而易見的原因,我們希望在我們的項目中以TS代替JS開始。如何在ASP.Net MVC中從JavaScript獲取TypeScript?

我們發生的問題是在給定視圖的模型設置的MVC視圖中設置的變量。

E.g. tes.cshtml:

@model Testmodel 
<script> 
    var test = {}; 
    var test.myProp = @Model.Testproperty; 
<script> 

現在在我的test.ts我,當我試圖讓測試變量,因爲我的打字稿文件不知道它得到了一個錯誤。

我在這裏有一個體繫結構懷念嗎?或者有這樣的訣竅嗎?

說實話,我們在RazorViews設置和/或創建了大約100個變量,很可能是我們需要的resx文件中的很多資源變量。在一個java腳本警報!

回答

1

您可以創建定義文件並將所有全局聲明放在那裏。例如:

declare interface SampleInterface{ 
    myProp:string; 
    myFunc(someParameter:string):void; 
} 
declare var test:SampleInterface; 
declare var someFunc:() => number; 

有關編寫聲明文件的更多信息here

+0

你可以擴展這個例子的功能?有了變量,它似乎工作得很好,謝謝:) –

1

一種方法是將所有變量或甚至所有資源變量連接到Window,之後您可以在typescript中創建類似助手的地方,您可以根據需要分析Window.Variables和Window.ResxVariables。

服務器端您將需要兩個字典變量和ResxVariables,它們可以是基本控制器中的靜態內容。

然後,你將需要兩個方法,這將有助於增加了變量這些字典

Variables.Add("Timezone", "GMT+2"); 

而且

ResxVariables.Add("ExitAlert", "Please stay more"); 

這兩個方法會在你的控制器動作訪問,您將有可能以也添加模型屬性。

然後,您將需要一個HtmlHelper,它將幫助您將這些字典呈現爲連接到Window的對象。

您還需要在渲染新頁面時支持清除這些字典,或者取決於您的需要。

當我使用類似這樣的東西時,我們有兩個字典GlobalVariables和PageVariables。當我們渲染一個新頁面時Global沒有被清除,但PageVariables是。

相關問題