2011-09-01 13 views
7

के लिए एएसपी.नेट एमवीसी 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> 

मेरा भ्रम यह है कि मैं आंशिक दृश्य प्राप्त करने के लिए नियंत्रक कार्रवाई को कैसे कॉल करूं?

+2

मुझे लगता है कि आप एचटीएमएल की तलाश कर रहे हैं। रेंडरएक्शन या जो भी यह रेजर में है ... – dotjoe

उत्तर

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

या

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

(अर्धविराम के बिना)

+0

एचटीएमएल। एक्शन ("रुपये फीड", "आरएसएसफिड") काम करता है लेकिन मुझे आरएसएस कंट्रोलर से व्यूडाटा कैसे प्राप्त करना चाहिए? – user686924

+0

जो भी आप अपनी क्रिया में व्यूडाटा में सेट करते हैं, दृश्य में मॉडल चर में दिखाई देता है, भले ही यह आंशिक हो। मेरा मतलब है, यह होस्ट पेज और होस्ट पेज के मॉडल से स्वतंत्र है, इसमें "अपने जीवन का" जीवन है। –

9

आप देखें बजाय PartialView बुला जाने की जरूरत है, यहाँ एक संशोधित कार्रवाई कैसी दिखाई देगी:

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 नामक आंशिक दृश्य होना चाहिए।

संबंधित मुद्दे