2016-09-22 11 views
5

私たちのプロジェクトではJSの代わりにTSを使いたいと思うのは明らかです。JavaScriptからASP.Net MVCのTypeScriptに移動するには?

発生した問題は、MVCビューで設定された変数で、指定されたビューのモデルによって設定されます。

など。 tes.cshtml:私のtest.tsで今

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

私はtypescriptファイルはそれを知っていないため、テスト変数を取得しようとすると、私はエラーを得ました。

私はここでアーキテクチャのミスコンセプションを持っていますか?それともやるべきことはありますか?

正直言って、約100個の変数が設定されています。RazorViewsに設定されています。ほとんどの場合、多くのRessource-Variablesはresxファイルから必要なものを探し出します。 Javaスクリプト警告で!

答えて

1

定義ファイルを作成し、すべてのグローバル宣言をそこに置くことができます。例:

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

宣言ファイルの作成に関する詳細情報here

+0

この例を関数に展開することはできますか?変数があればうまくいくようですが、ありがとうございます:) –

1

1つの方法は、すべての変数またはすべてのリソース変数をWindowに添付することです。その後、必要に応じてWindow.VariablesおよびWindow.ResxVariablesを解析できるtypescriptのヘルパーのようなものを作成できます。

サーバー側では、ベースコントローラー内の静的変数であるVariablesとResxVariablesの2つの辞書が必要になります。

次に、これらの辞書に変数を追加することが容易になるという二つの方法が必要になります

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

そして

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

これらの2つの方法は、お使いのコントローラのアクションでアクセス可能になりますし、あなたがする可能性がありますモデルプロパティも追加してください。

次に、これらの辞書をWindowに添付されたオブジェクトとしてレンダリングするのに役立つHtmlHelperが必要です。

また、新しいページをレンダリングしたり、必要に応じてこれらの辞書を消去することもサポートする必要があります。

私はこのようなものを使用したとき、GlobalVariablesとPageVariablesの2つの辞書を持っていました。グローバルは新しいページをレンダリングするときにクリアされませんでしたが、PageVariablesはありました。