1

asp.net Hot Towel SPAアプリケーションがあり、.htmlページと.cshtmlページの両方を使用したいと思います。

複数のviewExtensionsを追加することは可能ですか?

viewEngine.viewExtension = '.cshtml';
viewEngine.viewExtension = '.html';
4

2 に答える 2

3

viewExtensionは配列ではないため、最初は複数のviewExtensionsを設定できません。もちろん、これは単なるjavascriptであり、ソースに移動して、コアのDurandalアプリフォルダーからviewEngine.jsを変更できます(リンクはここにあります:https ://github.com/BlueSpire/Durandal/blob/master/App/durandal /viewEngine.js)。

そうは言っても、クライアントが* .cshtmlファイルをプルダウンした場合、かみそりの構文は、あなたが信じている方法でレンダリングされません。サーバーが*.cshtmlビューを提供する場合、クライアントに吐き出される前にレンダリングされます。Durandalを使用した動的ビューレンダリングを探している場合の最善の策は、viewEngineの一方または両方の関数をオーバーライドすることです。viewEngine.convertViewIdToRequirePath(viewId):stringであり、さらに制御するにはviewEngine.createView(viewId):promiseです。

詳細については、次のリンクを確認してください:DurandalJSでの動的コンテンツのルーティングと活用

于 2013-03-16T11:54:32.117 に答える
1

この要点を見てください:https ://gist.github.com/irium/5191764

これは、同様の問題に対する私自身の解決策です。これらは、デュランダルviewEngine とのカスタマイズですviewLocator。このモジュールをモジュールにインポートし、と関数shellの両方を実行します。その後、拡張子の付いたビューは以前と同じように処理されますが、ビューはリモートサーバーから要求されます。ただし、覚えておいてください。Durandalのビューキャッシュにより、これは1回だけ実行されます。同じビューの後続のすべてのリクエストは、クライアント側でキャッシュされたバージョンを使用します。これは、ビューのモジュールをRequireJSから手動で登録解除することで変更できますが、これは私のニーズの範囲外です。customizeViewEngine()customizeViewLocator().html.cshtml

これはJavaScriptにコンパイルされたCoffeScriptコードですが、アイデアが得られ、私のコードがお役に立てば幸いです。

于 2013-03-18T23:15:59.413 に答える