1

ASP.NET MVC Web サイトのすべてのページに "最新のニュース項目" サイドバーを配置する例を考えてみましょう。NewsItems に注意を向けるページに適した NewsItemController があります。ホーム ページの HomeController にニュース サイドバーを表示するのはどうでしょうか。または、そのことに関する他のコントローラーはありますか?

私の最初の本能は、上位 5 つの NewsItem を選択するためのロジックをユーザー コントロールに配置し、それをマスター ページで呼び出すことです。そうすれば、NewsItem ロジックで他のコントローラーを汚染することなく、すべてのページにニュース サイドバーが表示されます。これは、通常コントローラーに入るプレゼンテーションレイヤーであると私が理解したものにロジックを入れることを意味します。

私はそれにアプローチするための約半ダースの異なる方法を考えることができますが、関心事やその他の関連する流行語の分離に関しては、どれも「正しい」とは思えません。

4

3 に答える 3

1

http://eduncan911.com/blog/html-renderaction-for-asp-net-mvc-1-0.aspx

これは、サイドバーのインスタンスを使用している場合でも、質問に対処しているようですが、デフォルトでMVC1に含まれていない機能を使用しています。

http://blogs.intesoft.net/post/2009/02/renderaction-versus-renderpartial-aspnet-mvc.aspx

これは、答えがRenderActionにあることも示しています。

興味のある人のために、これが私がそれをやった方法です。RenderActionのMVCFuturesアセンブリが必要になることに注意してください。

基本的に、コントローラーには次のようなものがあります。

public class PostController
{

//...

   public ActionResult SidebarBox()
   {
      // I use a repository pattern to get records
      // Just replace it with whatever you use
      return View(repoArticles.GetAllArticles().Take(5).ToList());
   }

//...

}

次に、表示したいコンテンツを含むSidebarBoxの部分ビューを作成し、マスターページ(または表示したい場所)で次を使用します。

<% Html.RenderAction<PostController>(c => c.SidebarBox()); %> 

結局、それほど難しくはありません。

于 2010-01-11T03:28:03.910 に答える
1
  1. ユーザー コントロール (.ascx) を作成してから、RenderPartial() を呼び出すことができます。
  2. コントローラーで JsonResult を戻り値の型としてメソッドを設計します。jQueryと併用してください。
  3. 他の場所で提案されているように、RenderAction() を使用します。

ASP.NET MVC を使用したニュース セクション

于 2010-01-11T10:11:22.517 に答える
1

マスターページに配置することを検討する必要があると思います。コントローラーはデータを (もちろん非同期で) 収集し、ビューの適切な ViewModel プロパティ (または TempData) に格納し、マスター ページで RenderPartial() を呼び出してデータをレンダリングできます。

はすべてを「別々」に保持します

于 2010-01-11T03:19:46.587 に答える