1

そのため、クライアントは MVC アプリケーションをサイトに埋め込みたいと考えています。私の頭に浮かんだ最初の解決策 - サイトの iFrame にアプリケーションをロードすれば完了です。

彼らが望んでいるのはもう少し複雑であることがわかりました(そして愚かです)。アプリケーションをホストする必要がありますが、ユーザーがサイトにアクセスしたとき、コンテンツ (ビュー、レイアウト) を備えたサイトのように見える必要がありますが、ユーザーはレイアウトをホストしたいと考えています。

したがって、リクエストが行われるたびに、クライアントのサイトからページ (レイアウト) が取得され、レンダリングされたビューがそこに押し込まれ、エンド ユーザーに表示されます。

問題は、MVC でこれをどのように行うべきかについて頭を悩ませることができないため、クライアントが望むことを行うことは可能かということです。

コメントや提案はありますか?

4

2 に答える 2

2

最善の解決策は、単にデータを公開し、希望する方法でデータをレンダリングさせることです。コントローラーにJSONを吐き出させて、好きなようにそれを実行させることができます。ただし、これはすべて、ビューで重い作業が行われていないことを前提としています。

于 2013-01-07T21:10:39.223 に答える
1

彼らが求めているのは、実際には MVC ビュー エンジンが行うことの範囲外ですが、それでも可能かもしれません。ビュー エンジンは、Web ブラウザーとは異なり、さまざまな Web リソースから Web ページを組み立てません。ブラウザーは、html で指定されている内容に基づいて、JS、CSS、および画像を読み込みます。ビュー エンジンは、MVC アプリケーション内のディレクトリ構造の内容に基づいて、ビュー、テンプレート、およびレイアウトを読み込みます。これらのファイルを別のサーバーから取得するようには設計されていません。

ただし、セキュリティ上の懸念はありますが、この作業を行うことができると思います。クライアントがホストするネットワーク共有にリンクするシンボリック リンクを Views ディレクトリ内に作成できます。この共有には、彼らがあなたに使用してほしいレイアウトがあります。ここで、(ネットワーク共有ではなく) Views ディレクトリ内の独自のビューから、レイアウトを参照します。

@{
    Layout = "~/Views/HostedNetworkShare/layout.cshtml";
}

セキュリティ上の懸念から、この方法はお勧めしませんが、うまくいかない理由もわかりません。また、ネットワーク共有をホストする際にクライアントの協力が必要になります。

于 2013-01-07T21:17:21.113 に答える