ホームページ ウェブフロントエンド jsチュートリアル Javascript ファイルで .Net MVC Razor 構文を使用する方法を教える_JavaScript スキル

Javascript ファイルで .Net MVC Razor 構文を使用する方法を教える_JavaScript スキル

May 16, 2016 pm 04:41 PM
javascript

誰もがビューに JavaScript を入れ子にしてみたことがあると思います。現時点では、Razor 構文を直接使用して、いくつかの .NET メソッドを呼び出すことができます。たとえば、次のコードは Razor ビューにネストされています:

<script>
 var currDate = '@DateTime.Now'; //直接调用.NET的方法
 
 console.log(currDate)
</script>
ログイン後にコピー

しかし、別の状況として、独立した JS ファイルで Razor を使用したい場合、MVC は JS ファイルを直接解釈せず、Razor ビューにのみ配置できるため、上記の方法は実行できません。ただし、ここではスタンドアロン JS ファイルで Razor を直接使用できるサードパーティ ライブラリをお勧めします


この種のライブラリの名前は RazorJS です。これはオープンソース プロジェクトであり、次のアドレスからソース コードをダウンロードできます。

https://bitbucket.org/djsolid/razorjs

または、Nuget を通じて直接インストールすることもできます:

PM> Install-Package RazorJS

ログイン後にコピー
OK、まずはこのクラス ライブラリが何をもたらすかについて話しましょう。インストール後、.NET でサポートされているすべてのメソッドを JS ファイルで直接使用できます。たとえば、上記のコードを別の JS ファイルに直接入れて使用できます。さらに、JS ファイルで .NET の完全な名前空間を参照することもできます。 File オブジェクトを呼び出してテキスト ファイルの内容を読み取る場合は、System.IO 名前空間を直接参照できます。

@using System.IO;
 
var s = 'Hello at @DateTime.Now \n @File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/web.config"))';
ログイン後にコピー
実行後、web.config ファイルのすべての内容を JS で直接取得できます。なかなかいい感じですね(笑)。では、そのようなライブラリはどのように機能するのでしょうか?実際、上記の効果を実現するために、RazorEngine と呼ばれるクラス ライブラリが使用されます。 RazorEngine は非常に強力な Razor 解釈エンジンであり、私は以前にいくつかのプロジェクトで使用したことがあります。このエンジンを使用すると、Razor 構文を Win フォームで直接使用することもできます。その利点について考えたことはありますか?

それは良いことです。このエンジンを使用すると、Web 環境から完全に独立して MVC の Razor を使用でき、一部のメール テンプレートなどの柔軟なテンプレートをテンプレート内に直接作成できます。さまざまな .NET メソッドやカスタム オブジェクトを使用して、必要なものを動的に生成します。さて、今回紹介したいのはこのエンジンではありません。

次に、RazorJS の使用方法について説明します。Nuget 経由で直接インストールすると、web.config が自動的に構成されます。それ以外の場合は、web.config に自分で追加する必要があります。構成にはいくつかの場所がありますが、ここでは詳しく説明しません。インストール後に比較できます。 RazorJS の使用も非常に簡単で、次の構文を使用して必要な JS ファイルを参照するだけです:

<p>
 @Html.RazorJSInline("~/Scripts/Example.js")
</p>
ログイン後にコピー
ただし、注意すべき点が 1 つあります。web.config には、RazorJS の使用を許可するように構成されたディレクトリがあることです。つまり、この方法を使用して JS ファイルを参照するには、その前に JS ファイルをこのディレクトリに配置する必要があります。 🎜>

最後に話したいのは、その限界についてです。もちろん良い点もありますが、悪い点もあります。 RazorEngine を使用しているため、JS では MVC の HTML ヘルパー メソッド、つまり @Html で始まるすべてのメソッドが使用できません。もう 1 つの問題は、JS 内のコメント コードを認識できないことです。つまり、コメント内で .NET メソッドを使用しても、メソッドが正しい場合は問題なく実行されます。 JS が中断され、直接エラーが報告されるため、無駄なメソッドをコメントアウトするだけで十分だとは考えないでください。
<razorJSSettings handlerPath="~/razorjs.axd">
 <allowedPaths>
 <add path="~/Scripts" />
 </allowedPaths>
 </razorJSSettings>
ログイン後にコピー
@Html ヘルパーを実行できない問題については、ここで別の解決策を提供しますが、これはソースコードを変更する可能性があるので、それをいじりたい友人は試してみてください。実際、これを行うために多くのカスタマイズされた方法を使用することもできます。これは、より柔軟で便利です。 RazorJS ソース コードをダウンロードした後、それを直接変更して DLL を再コンパイルすることもできます。もう 1 つの方法は、そのソース コードを別のプロジェクトとして扱い、自分のプロジェクトに直接追加することです。

ソース コードで HtmlTemplateBase.cs ファイルを開き、ここに独自のメソッドを追加すると、ここに追加されたメソッドを JS で直接呼び出すことができます。たとえば、ソース コードには、URL を要求側クライアントで使用可能な URL に変換する、カプセル化された Href メソッドが含まれています。この記述方法に従って、独自のメソッドを追加できます。たとえば、次のような方法で、国際化されたリソース ファイルを動的に取得するメソッドをカプセル化し、.NET リソース ファイルを国際化のために JS で直接使用できるようにします。

次に、JS で直接呼び出します:
public class HtmlTemplateBase : TemplateBase
 {
 //手工调用资源文件管理器
 private static ResourceManager resources = (ResourceManager)System.Type.GetType
  ("RazorJS.Resource").GetProperty("ResourceManager").GetValue(null, null);
 
 public HtmlTemplateBase()
 {
  Url = new UrlHelper(HttpContext.Current.Request.RequestContext);
 }
 public string Href(string originalUrl)
 {
  return Extensions.ResolveUrl(originalUrl);
 }
 
 public string GetLangText(string langKey)
 {
  根据key返回相关的语言
  return resources.GetString(langKey);
 }
 
 public UrlHelper Url { get; set; }
 }
ログイン後にコピー

実行後、CoderBlog キーの内容を JS に直接入力できます
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 Dec 17, 2023 am 08:41 AM

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。

See all articles