誰もがJavaScriptをビューで使用しようとしたと思います。Razorの構文を使用して、.NETのいくつかの方法を呼び出すことができます。次のコードはかみそりビューにネストされているため:
<Script> var Currdate = '@DateTime.Now'; // .NETメソッドConsole.log(currdate)</script>を直接呼び出します
しかし、別の状況は、MVCがJSファイルを直接解釈せず、Razorビューにのみ配置できるため、別のJSファイルでRazorを使用したい場合、上記の方法は機能しないことです。ただし、ここではサードパーティライブラリをお勧めします。これにより、独立したJSファイルでRazorを直接使用できます。
このライブラリの名前はrazorjsです。これはオープンソースプロジェクトです。次のアドレスからソースコードをダウンロードできます。
https://bitbucket.org/djsolid/razorjs
または、nugetを介して直接インストールすることもできます。
PM>インストールパッケージrazorjs
さて、この図書館が最初に何をもたらすことができるかについて話しましょう。インストール後、JSファイルですべての.NETサポートされたメソッドを直接使用できます。たとえば、上記のコードは、使用するために独立したJSファイルに直接配置できます。さらに、JSファイルの.NETのフルネームスペースを参照することもできます。ファイルオブジェクトを呼び出してテキストファイルのコンテンツを読み取る場合は、System.io namespaceを直接参照できます。
@Using System.io; var s = 'hello at @datetime.now /n @file.readalltext(system.web.hosting.hostingenvironment.mappath( "〜 /web.config"))';
実行後、JSのweb.configファイルですべてのコンテンツを直接取得できます。かなり良さそうです、ハハ。それでは、このタイプのライブラリはどのように正確に機能しますか?実際、Razorengineというクラスライブラリを使用して、上記の効果を実現しています。 Razorengineは非常に強力なレイザー説明エンジンであり、以前にはいくつかのプロジェクトで使用しました。このエンジンを介して、Razor構文を直接WINフォームで使用することもできます。ハハ、その利点について何か考えがあるのだろうか?
まあ、このエンジンを使用すると、完全に独立したWeb環境でMVCのカミソリを使用できます。この関数を使用すると、一部の電子メールテンプレートなど、いくつかの柔軟なテンプレートを非常に便利に作成できます。テンプレート内のさまざまな.NETメソッドまたはカスタムオブジェクトを直接使用してから、目的のコンテンツを動的に生成できます。わかりました、でもこのエンジンは私が今回紹介したいものではありません、私はここでそれについて話しているだけです
次に、Razorjsの使用について話しましょう。 nugetを介して直接インストールすると、web.configを自動的に構成します。これは推奨されるインストール方法です。それ以外の場合は、web.configに構成を追加する必要があります。いくつかの場所があり、ここでは詳細には入りません。インストール後に比較できます。また、Razorjsを使用するのは非常に簡単です。次の構文を使用して必要なJSファイルを参照するだけです。
<p> @html.razorjsinline( "〜/scripts/example.js")</p>
ただし、注意すべきことの1つは、web.configにrazorjsを使用できるようにするディレクトリがあることです。つまり、このメソッドを使用して参照する前に、JSファイルをこのディレクトリに配置する必要があります。
<razorjssettings handlerpath = "〜/razorjs.axd"> <aopladpaths> <path = "〜/scripts"/> </aoptorpaths> </razorjssettings>
私が最後に話したいのは、その限界です。良いものと悪い面があります。 Razorengineを使用するため、JSでMVCのHTMLヘルパーメソッド、つまり@HTMLから始まるすべてのメソッドを使用することはできません。別の問題は、JSのコメントコードを認識できないことです。つまり、コメントで.NETメソッドを使用すると、実行されます。あなたの方法が正しい場合、問題はありません。それ以外の場合、JSの実行が中断され、エラーが直接報告されます。ですから、役に立たない方法がコメントするのに十分だとは思わないでください。
@HTMLヘルパーを実行できないという問題に関して、ここで別のソリューションを提供しますが、これによりソースコードを変更できます。投げたい友達はそれを試すことができます。実際、これを行うために多くのカスタム方法を使用できます。これは、より柔軟で便利です。 Razorjsソースコードをダウンロードした後、それを直接変更してDLLを再コンパイルすることができます。別の方法は、そのソースコードを別のプロジェクトとして使用し、それを独自のプロジェクトに直接追加することです。
ソースコードでは、htmltemplatebase.csファイルを開くと、ここに独自のメソッドを追加できます。ここに追加されたすべてのメソッドは、JSで直接呼び出すことができます。ソースコードでカプセル化されたHREFメソッドを見つけることができる場合、URLを要求クライアントで使用できるURLに変換できます。この執筆方法によれば、次のような独自の方法を追加できます。次のように、国際的なリソースファイルを動的に取得する私の方法であるため、国際化にはJSで.NETリソースファイルを直接使用できます。
パブリッククラスhtmltemplatebase:templatebase {//リソースファイルマネージャーを手動で呼び出すprivate static resourcemanager resources =(resourcemanager)system.type.getType( "razorjs.resource")。getProperty( "resourcemanager")。 public htmltemplatebase(){url = new urlhelper(httpcontext.current.request.RequestContext); } public string href(string originalurl){return extensions.resolveurl(originalurl); } public string getLangText(String LangKey){キーリターンリソースに基づいて関連する言語を返す。GetString(LangKey); } public urlhelper url {get;セット; }}次に、JSで直接呼び出します。
var s = '@getlangtext( "coderblog")'; console.log(s);
実行後、JSのCoderBlogキーのコンテンツを直接入力できます。