問題タブ [viewengine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-3 - 選択したビューパスをHTMLコメントとして挿入して、アクションの出力を開始および終了します
現在、MVC 3を使用してマルチテナンシーWebアプリを作成しています。少なくとも30の異なるWebサイトが共通のコードベースを共有し、同様の内部機能を共有する一方で、それらは大幅に異なるように見える必要があります。結果として、URLを使用してクライアントを内部的に分離し、オーバーライドされたRazorビューエンジン(少なくともビューの検索に関して)を使用して、特定のアクション用にカスタマイズされたビューまたはデフォルトのビューを自動的に選択します。
複雑なページを「コンパートメント化」するために、特定のビューはいくつかのパーシャルを使用し、通常は自己完結型のアクションとしてレンダリングされるため、通常、カスタムビューまたはパーシャルビューのHTMLの違いはわずかであり、に固有のコードを最小限に抑えるのに役立ちます。クライアントのサイト。
あなたがその背景に従ったことを願っています!
したがって、1つのHTMLページは、クライアントの特定のフォルダーまたは汎用バージョンから取得される可能性のあるHTML部分ビューの小さな断片で構成されている可能性があります。デザイナーが変更したいHTMLのビットがフォルダー構造のどこにあるかを簡単に確認できるようにすることで、デザイナーがページに小さな変更を加えやすくすることを望んでいます。
私の提案は、各パーシャルが次のようなHTMLコメントで「括弧で囲まれる」ことです。
{部分的な内容}
明らかに、これらを手動で挿入することもできますが、それは問題、タイプミス、コピーされてから変更されたクライアントバージョンが正しいURLで更新されていないことを求めているだけです。ある文脈からこれを取得して注入することは可能であると私は思います。
同時に、特定のアクションではこれを実行できないようにする必要があります。たとえば、パーシャルがテキストエリア内にテキストを生成している可能性があるため、コメントは適切ではありません。全体として、適切でないことを明記しない限り、これらのコメントを喜んで入力します。
私にとって、これはアクションにActionFilterを提案します。これは、サイト全体に適用してから、特定のアクションに対してオフにすることができます。オーバーライド可能なイベントの1つでこのパスを確認できるといいのですが、保存されている場所が見つからないようです。さらに、OnResultExecutingは、Partialが選択される前に起動しているようであり、OnResultExecutedはすでにPartialの内容を書き出しているようであるため、ここに開始コメントを挿入することはできません。また、選択したパーシャルのパスへの参照が見つかりません。
完全を期すために、この属性はデバッグモードでコンパイルされた場合にのみこれらのコメントを書き込むことを意図しています。
それで、FindPartialViewと属性の間のハックなしで、選択したビューへのパスを取得する方法を誰かが知っていますか?私の属性メソッドが最良の選択ですか、それともこれを行うためのより簡単な方法がありますか?おそらく、何かがすでに組み込まれています!
助けてくれて本当にありがとうございます。
asp.net - ASP.Net MVC でカスタム ビュー エンジンを使用しているときにクライアントから発生する不規則な要求
これを理解しようとして約7時間費やしましたが、どこにも行きませんでした。
これは私のフィドラートレースがどのように見えるかです
このページに登録されている以下のような 2 つのルートがあります。
この URL では、最初のルートが一致し、正しいアクションに進みます。ただし、クライアントは 1 秒後に別の要求を送信し、最後のパラメーター「page-1」を削除して「none」に置き換えます。XHR をトレースしましたが、何もありません。これが MVC フレームワーク自体の問題かどうかはわかりませんが、クライアントからの要求としてどのように変換されるのでしょうか?!!! また、ブラウザーによって動作が異なります (上記の IE トレース)。そのような奇妙な行動に遭遇した人はいますか?もしよろしければ詳しい情報を教えていただけると幸いです。
アップデート:
IIS でサイトをセットアップし、イメージ、CSS、またはスクリプトの要求をすべて排除しました。私はまだ複数の要求に終わります。.htc を削除した後、元のダミー結果ページが機能しているようです。ただし、「協力」していない別のページ (下のスクリーンショット) があります。特定の拡張機能に Ignoreroutes を追加する必要がありますか? これは私を夢中にさせています!!! 画像の「ピー音」はご容赦ください (IP 上の理由による)。PS: すべての静的リソースを提供するために別のサイトをセットアップしました。
asp.net-mvc - Razor View エンジンのダウンロード方法
ASP.Net MVC 2 の razor ビュー エンジンをダウンロードしてインストールしたいのですが、どこからダウンロードしてインストールできますか?
asp.net-mvc-2 - ASP.NET MVC で HTML ヘルパーを使用するのはなぜですか?
ASP.NET MVC プロジェクトで HTML ヘルパーを使用した後、良いこと、ベスト プラクティス、または利益はありますか?
それらを使用しようとすると、HTML の速度が低下し、HTML ヘルパーを使用するたびに多くの問題が発生することがわかりました。
他の [技術者でない] 人は、私が Helper を使って書いたものを見せたい場合や、もっと時間を費やす必要があることをしたい場合、HTML の実践的な知識があったとしても理解できません。
HTML ヘルパーを使用すると速度が低下します。HTML を使用するときは、入力するだけで、もちろん意識していません。しかし、ヘルパーを使用すると、わかりにくいです。
HTML ヘルパーを使用すると何が得られますか? スピードを失ったから得られたものではないと思います。他の人は、私がヘルパーを使って何をしているのか理解できず、必要に応じてコードをカスタマイズできません。
なぜ HTML ヘルパーを使用するのですか?
asp.net-mvc - 他のビュー エンジンに対する Razor ビュー エンジンのいくつかの利点は何ですか
Spark、NHaml、またはデフォルトの aspx ビュー エンジンなどの他のビュー エンジンに対する構文以外の Razor ビュー エンジンのいくつかの利点を知りたいです。また、それらのパフォーマンスの違いは何ですか
s#arp-architecture - S#arp アーキテクチャ 1.9 + マルチテナント カスタム ビュー エンジン
S#arp が使用するカスタム AreaViewEngine を作成する最も簡単な方法は何ですか?
現在のテナントのビューを検索する別のディレクトリを追加したいのですが、テナント ディレクトリはドメイン名 (hm.com など) の一部になるため、ビュー エンジンで次のことを確認します。
/Tenants/hm.com/Views/Home/Index.aspx
AreaViewEngine から継承された新しい TenantViewEngine.cs を作成して新しいパスを追加しようとしましたが、HttpContext にアクセスしてホスト名を取得できません。
何か案は?
ありがとう。ポール
unit-testing - 文字列なしのMVC3Razorヘルパー/ビューの単体テスト
私はMVC3Razorビューエンジンを試していますが、私が探求している機能の1つは、ビューを単体テストする機能です。
Razorビューをアセンブリにコンパイルして文字列にレンダリングできる例をいくつか見てきました。問題は、文字列としてレンダリングされることです。そのため、文字列検索を行う必要があります。
これが私がやろうとしていることです。
- Razorヘルパーを作成する
- ヘルパーをコンパイルする
- コンパイルされたヘルパーを実行し、ViewModelを渡します
- ヘルパーの出力をある種のHTML/XML/ツリー構造として取得します
これを実行したい理由は、出力の特定の部分をテストできるようにするためです。ヘルパーは、さまざまな出力ガンクを含むHTMLを吐き出す可能性があります。私がやりたいのは、特定の値を持つチェックボックスがあるかどうかを確認することです(たとえば)。Seleniumのテストを見たことがあれば、サーバー駆動のテストではないことを除けば、私がやりたいことと似ています。
コンパイルされたRazor(または他のビューエンジン)ビューを取得して、文字列以外のものを出力する方法はありますか?
asp.net-mvc - asp.net mvc Razor ViewEngine で @section をオプションにする方法はありますか?
次のような Page.cshtml があります (これは機能しません)。
私が言ったように、これはうまくいきません。コレクションに何もない場合は、セクションを定義したくありません。このようなものを機能させる方法はありますか?そうでない場合、他にどのような選択肢がありますか? 私はこの Razor ViewEngine を初めて使用します。
編集
私のレイアウトには次のものがあります:
私が望まないのは、セクションが空のときに出力する div です。
asp.net-mvc-3 - ASP.NET MVC3 Razor - 別の場所にビューを配置すると IntelliSense が失われましたか?
VS2010 Ultimate、ASP.NET MVC 3 w/Razor。
MVC3 アプリで、ネストされた領域を許可するカスタム ビュー エンジンを作成しました。
等
標準の場所にないビューでインテリセンスを失ったように見えることを除いて、これはすべてうまく機能します~/areas/area_name/views/myview.cshtml
。
助言がありますか?
アップデート
ひばりに @inherits ステートメントを追加しました
そしてインテリセンスが働き始めました。その後、ステートメントを削除しましたが、引き続き機能します。
ファイル拡張子以外に、開いているファイルにどの種類のインテリセンスを適用するかを Visual Studio に指示するプロジェクト ファイルまたは何かの設定はありますか? (拡張機能が使用されたすべてである場合、私はそれがはるかに一貫性があると期待しています)。
更新 2
各ビュー フォルダーに web.config を追加すると問題はかなり解決しますが、かみそりの構成をルート web.config に配置しても問題は解決しません。
system.web.webPages.razor
に必要なセクションを追加した後~/web.config
、
- 入れ子になったビュー フォルダーの 1 つに Razor .cshtml ビュー ファイルを追加します。
- インテリセンスは動作します。
- ファイルの名前を変更します (.cshtml 拡張子を保持します)
- Intellesense と構文の強調表示が機能しなくなります。
- 名前を変更したファイルを閉じて、もう一度開きます。すべてが再び機能し始めます。
- または、ファイルを閉じて再度開く代わりに、名前を元の名前に戻すと、再び機能し始めます。
これはVSのバグのように感じます.ファイルの名前を変更しても(ただし、適切な拡張子を維持して)、私が知る限り、この種の動作を引き起こすべきではありません. 問題を修正するため、各ビュー フォルダーに個々web.config
の を配置し続けますが、他の web.config 設定と同様に、これらの設定がソリューション ツリー全体に反映されると予想される場合に、ソリューションを乱雑にする必要があるのは面倒です。
また、Razor 構成がどこにあっても、Intellesense が機能しているかどうかにかかわらず、サイトは引き続き正しく機能することにも注意してください。
解決済み
これは既知の問題であり、MVC3 RTM および VS2010 SP1 で修正されていることを Powers That Be から (信じられないほど迅速に) 知らされました。MVC3 のインストールを更新して SP1 を追加すると、この問題はなくなりました。
asp.net-mvc - (ちょっと)ファイルベースではないASP.Net MVCでカスタムビューエンジンを実装する方法は?
ASP.Net MVC を目的とせずに最初に作成した、かなり汎用的なビュー エンジンを作成しました。ただし、少なくともMVCプロジェクトで簡単に使用できる場所に配置することをお勧めします。ただし、私のプロジェクトが ASP.Net MVC スタイルにうまく対応するかどうかは疑問です。
私が抱えている問題は、ビュー エンジンが T4 テンプレートを介してコンパイル時にすべてを生成することです。これは、ほとんどの場合、すべてが静的に型付けされていることを意味します。ただし、ほとんどの MVC は少し緩く型付けされているようです。
したがって、一部のビューでは、次のコードが生成される場合があります。
また、仕組み上、views/FooView.html ファイルがあっても、 という名前のクラスに処理される場合がありますMyView
。
ViewData
では、言うことFoo
とBar
MyViewを割り当てる最良の方法はどのように正確ですか? ビューで単一のフィールドしか使用できないという制限を課す必要がありますか(基本的にはViewData
)または?
もう 1 つの大きな問題は、MVC がほぼ完全にファイル ベースであることです。RenderView("MyView",data);
/views/ で MyView.aspx などの名前のファイルを検索すると言うと (ファイルの表示場所とファイル拡張子はもちろん変更できます)。問題は、MyView
という名前のファイルからコンパイルされた可能性があることですFooView.html
。基本的に、クラス名からファイルシステム名へのマッピングで利用可能なすべてのビューの巨大なリストを生成する必要がありますか? それとももっと良い方法がありますか?
注: 私はすべてのビューを T4 テンプレートから生成するため (そしておそらく MVC ビュー エンジンを生成することもできます)、これは、巨大なリストやその他の非常に退屈な、または悪いコードを記述できることを意味します。しかし、この場合、巨大なリストよりも良い方法があり、リストのみを保持することには根本的な問題があると思います.