あなたはここでさまざまな質問をしています。
umbraco Umbraco で開発する場合、Web サイトに外部データを埋め込むことは珍しくありません。プレーンな .Net プロジェクトで使用する (ほぼ) あらゆる種類のデータアクセスを使用できることを既に説明した場合。
umbraco コンテキストを失わないでください
外部データ (例) 製品を取り込むときは、 umbraco コンテキストを失わないことが重要です。レンダリングするブレッドクラム、アクティブなメニューを設定するための css クラスなどはまだあります。あなたの「外部データ」はおそらくノードの下に属しています。そのため、標準 MVC コントローラーを使用するのはお勧めできません。
汚れたカミソリ
ビューはかみそりにあるため、外部データのすべての抽出をビューの @{ ... } に入れることができます。経験豊富なプログラマーでなくても、これで問題ありません。保守性と DRY 原則に関するトピックには疑問がありますが :-)
RenderMvcController と SurfaceController の比較
RenderMvcControllerを使用する場合、基本的には特定のドキュメント タイプのコントローラーを作成しています。umbraco がこのドキュメント タイプのノードをレンダリングするたびに。このコントローラーが呼び出され、レンダリングしたモデルがビューに送り返されます。ご想像のとおり、これはデータを抽出してビューにプッシュするための私のお気に入りの場所の 1 つです。一方、サーフェス コントローラーは部分ビュー用のコントローラーであり、フォーム ポストバックの処理に非常に適しています。これらのコントローラーはどちらも、バックエンドではなく、Web サイトのフロントエンドに使用できます。
あなたの意見を継承する
ビューを使用して、必要なことを行うことができます。ただし、UmbracoViewPage からビューを継承する場合でも@Umbraco.Whatever
、ビューで利用可能なすべての機能を利用できます。
あなたのURLは同じままです
RenderMvcController を使用してルートを「ハイジャック」するため、umbraco バックエンドを信頼して正しい URL にアクセスできます。クエリ文字列を使用して、必要な外部データを取得できます。
その他のコントローラーまたはメソッド
上記のコントローラーを使用できない場合は、IPublishedContent に extensionMethod を作成することがあります。そのように、私は次のようなコードを書くことができます:
foreach (var myObj in Model.Content.GetMyExternalData()) {
// do stuff
}
(webApi ラッパーを使用して) データを公開する必要がある場合は、UmbracoApiControllerを試してください。このRESTピュアが歌いました。
umbraco でのデータ アクセス
Umbraco は ORM としてpetapocoを使用していることを知っておく必要があります。したがって、それも使用することを検討できます (また、検討する必要があります)。問題なくデータベース接続を再利用できます。
var query = new Sql().Select("*").From("myCustomTable").Where<MyModel>(x => x.Id == id);
return DatabaseContext.Database.Fetch<MyModel>(query).FirstOrDefault();