Asp.net mvc ASP.NET MVC 3控制器对部分视图的操作

Asp.net mvc ASP.NET MVC 3控制器对部分视图的操作,asp.net-mvc,partial-views,Asp.net Mvc,Partial Views,我是MVC新手,不知道如何正确使用局部视图。我正在尝试在我的MVC应用程序中显示来自博客站点的RSS提要。我使用的是Razor,我有以下结构: Controllers/HomeController.cs Controllers/RssController.cs Views/Home/Index.cshtml Shared/_Layout.cshtml Shared/_Rss.cshtml 家庭控制器: namespace MvcApp.Controllers {

我是MVC新手,不知道如何正确使用局部视图。我正在尝试在我的MVC应用程序中显示来自博客站点的RSS提要。我使用的是Razor,我有以下结构:

Controllers/HomeController.cs
Controllers/RssController.cs

Views/Home/Index.cshtml

Shared/_Layout.cshtml
Shared/_Rss.cshtml
家庭控制器:

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

                return View();

            }

        }
    }
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控制器:

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

                return View();

            }

        }
    }
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>"); 
}
@使用System.ServiceModel.Syndication;
@使用系统文本;
@使用System.Xml.Linq;
RSSFeed
@foreach(ViewData.Model.Items中的var项)
{ 
字符串URL=item.Links[0].Uri.OriginalString;
字符串标题=item.Title.Text;
StringBuilder sb=新的StringBuilder();
foreach(item.ElementExtensions中的SyndicationElementExtension扩展)
{
XElement ele=extension.GetObject();
if(ele.Name.LocalName==“encoded”&&ele.Name.Namespace.ToString()包含(“内容”))
{
sb.追加(ele.Value+“
”); } } Write(string.Format(“”,URL,Title)); 回答。写(“
”+sb+”

”; }
_Layout.cshtml:

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

@RenderBody()
@Html.Partial(“_Rss”);
我的困惑是如何调用控制器操作来获取局部视图

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


(不带分号)

您需要调用的是
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

的局部视图。我想您正在查找Html.RenderAction或Razor中的任何内容……Html.Action(“RssFeed”、“RssFeed”)可以工作,但我应该如何从RSSController获取ViewData?无论您在操作中的ViewData中设置了什么,都会反映在视图中的模型变量中,即使是局部的。我的意思是,它独立于主机页和主机页的模型,它有“自己的生命”。