2011-09-01 9 views
7

私はMVCが新しく、パーシャルビューの使い方を正しく理解できません。私はMVCアプリケーションのブログサイトからRSSフィードを表示しようとしています。私はカミソリを使用していると私は、次の構造を有する:ASP.NET MVC 3コントローラの部分的な操作

Controllers/HomeController.cs 
Controllers/RssController.cs 

Views/Home/Index.cshtml 

Shared/_Layout.cshtml 
Shared/_Rss.cshtml 

にHomeController:

namespace MvcApp.Controllers 
    { 
     public class HomeController : Controller 
     { 
      public ActionResult Index() 
      { 
       ViewBag.Message = "Welcome to ASP.NET MVC!"; 

       return View(); 

      } 

     } 
    } 

RssController:

namespace MvcApp.Controllers 
{ 
    public class RSSFeedController : Controller 
    { 

     public ActionResult RssFeed() 
     { 
      string strFeed = "http://foo.wordpress.com/category/foo/feed/"; 

      using (XmlReader reader = XmlReader.Create(strFeed)) 
      { 
       SyndicationFeed rssData = SyndicationFeed.Load(reader); 

       return View(rssData); 
      } 
     } 

    } 
} 

_Rss.cshtml:

@using System.ServiceModel.Syndication; 
@using System.Text; 
@using System.Xml.Linq; 

<h2>RSSFeed</h2> 
@foreach (var item in ViewData.Model.Items) 
{ 
string URL = item.Links[0].Uri.OriginalString; 
string Title = item.Title.Text; 
StringBuilder sb = new StringBuilder(); 
foreach (SyndicationElementExtension extension in item.ElementExtensions) 
{ 
    XElement ele = extension.GetObject<XElement>(); 
    if (ele.Name.LocalName == "encoded" && ele.Name.Namespace.ToString().Contains("content")) 
    { 
     sb.Append(ele.Value + "<br/>"); 
    } 
} 
Response.Write(string.Format("<p><a href=\"{0}\"><b>{1}</b></a>", URL, Title)); 
Response.Write("<br/>" + sb + "</p>"); 
} 

_layout。 cshtml:

<div id="main"> 
    @RenderBody() 
</div> 
<div id="BlogContent"> 
    @Html.Partial("_Rss"); 
</div> 

私の混乱は、部分的な表示を取得するためのコントローラアクションをどのように呼び出すのですか?あなたはPartialViewではなく、ビューを呼び出すする必要がある(セミコロンなし)

+2

私はあなたがHtml.RenderActionを探していると思っていますか、それともRazorの中にあっても... – dotjoe

答えて

4
@Html.RenderAction("RssFeed", "RSSFeed"); 

または

@Html.Action("RssFeed", "RSSFeed") 

+0

Html.Action( "RssFeed"、 "RSSFeed")は動作しますが、RSSControllerからViewDataを取得する方法はありますか? – user686924

+0

アクションでViewDataで設定した内容は、ビューのModel変数に反映されます(部分的であっても)。つまり、ホストページとホストページのモデルとは独立しています。それは「自分自身の人生」を持っています。 –

9

は、ここで変更アクションがどのように見えるかです:

public ActionResult RssFeed() 
    { 
     string strFeed = "http://foo.wordpress.com/category/foo/feed/"; 

     using (XmlReader reader = XmlReader.Create(strFeed)) 
     { 
      SyndicationFeed rssData = SyndicationFeed.Load(reader); 

      return PartialView(rssData); 
     } 
    } 

その後、RssFeedと呼ばれる部分的なビューが必要になります。

関連する問題