2012-03-14 5 views
1

私は私のASP.NET MVC3カミソリアプリケーションでRSSリーダーを構築するために、次のチュートリアルを使用:ただし、チュートリアルの例とは異なり、私はRSSフィードは、すべてのページに表示させたいレイアウトファイルからコードを実行するにはどうすればよいですか?

http://weblogs.asp.net/jalpeshpvadgama/archive/2011/08/17/creating-basic-rss-reader-in-asp-net-mvc-3.aspx

を、したがって、私のレイアウトファイルに追加している/Views/Shared/_Layout.cshtml

私は現在、唯一の私のサイト上で2つの景色を眺めることができ、かつRSSリーダーは、私は次のコードを持って両方のビュー上で動作するように得るために、私HomeController

public class HomeController : Controller 
    { 
     // 
     // GET: /Index/ 

     public ActionResult Index() 
     { 
      return View(CT.Models.RssReader.GetRssFeed()); 
     } 

     public ActionResult About() 
     { 
      return View(CT.Models.RssReader.GetRssFeed()); 
     } 

    } 

WebFormsの経験から、RSSリーダーコードをマスターページコードの後ろに追加するだけで、すべてのページで自動的に動作します。

同じことをするためのレイアウトページのコントローラはありますか?

何も返さずに、レイアウトページのすべての呼び出しでこれを動作させるにはどうすればよいですか?


EDIT:はセバスチャンのアドバイス、@の後、私は今、部分図にこのコードを追加return View()からCT.Models.RssReader.GetRssFeed()を取り出し、私のレイアウトファイルでこれを含めました:

@Html.Partial("_MyPartialView") 

コードでこの部分図は次のとおりです。

<ul> 
    @foreach (var item in Model) 
    { 
     <li> 
     <a href="@item.Link" target="_blank">@item.Title</a> 
     </li> 
    } 
</ul> 

しかし、私は、ランタイムエラーを取得していないよ。

Object reference not set to an instance of an object.

それはあなたが部分図を作成し、そこに機能を追加する必要がライン@foreach (var item in Model)

答えて

4

にerroringます。 レイアウトで、この部分をレンダリングします。あなたの部分図は、実際に部分図

EDIT

ですか?私が言ったのは、名前の前に "_"が付いていて、それがレイアウトであることを示唆しているからです(命名規則にすぎないかもしれません)。

オブジェクト参照エラーを修正するには、部分表示の上部に@Model宣言を追加する必要があります。

希望します。

UPDATE 部分図に別のモデルを使用するには、明示的にレンダリングpartialmethodに使用しようとしているモデルを宣言する必要があります。

@{Html.RenderPartial("../YourFeed", Model.YourFeedModel);} 

問題が解決した場合はお知らせください。

+0

乾杯を作ることのような...

public static RssRepository { public static MyModel GetFeed() { return new MyModel();//<- return what you would normally pass as a Model for RSS feeds } } 

ホープのような

@foreach (var item in RssRepository.GetFeed()) { <li> <a href="@item.Link" target="_blank">@item.Title</a> </li> } 

この助けて、もう一つのエラーが出てきます。私の質問の編集を参照してください – Curt

+0

私の答えを更新しました。上に見てください –

+0

ああ私の貧しい大会の命名は、私は部分的なビューの下線を使用し、それをコピーしたチュートリアルを見た。私は '@model IEnumerable 'を部分ビューの一番上に表示していますが、私はまだ同じエラーを受けています。 – Curt

1

新しいエラーは、モデルを部分ビューに渡さないためです。 Html.Partial関数の2番目の引数でこれを行うことができます...

Html.Partial("ViewName", MyModel); 

レイアウトページでこれを実行しようとしていると思うので、静的リファレンスを使用してRSSフィードを取得することもできます。だから、モデルにして、部分的に渡すためにしている必要が忘れる:クラス何かすべてがあなたのためのセンス

関連する問題