我可以创建一个在asp.net mvc 3中呈现Rss的Razor视图吗?
问题描述:
我知道要生成rss我可以使用像SyndicationFeed和Rss20FeedFormatter这样的内置类。另外我知道它可以通过自定义类和aspx视图来完成。我可以创建一个在asp.net mvc 3中呈现Rss的Razor视图吗?
但是,如果我想创建自定义提要对象和自定义视图,我可以使用剃须刀吗?
这是我的观点:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<h2>@Model.Title</h2>
<div><b>Description:</b> @Model.Description</div>
<div><b>Language:</b> @Model.Language</div>
<a href="@Model.Url" class="averageLink">Subscribe to this Feed</a>
@foreach (var item in Model.Items)
{
<h3>
Title: @item.Title
</h3>
<div>
<img width="75" height="75" src="@Url.Action("GetImage", "Store", new { productId = item.ProductId })"/>
</div>
<div><b>Description:</b> @item.Description</div>
<div><b>Creator:</b> @item.Creator</div>
<div><b>Date published</b> @item.Published</div>
<div>
<a href="@item.Url" class="averageLink">place order on Ozon</a>
</div>
@Html.ActionLink("go to item", "ItemInformation", "Store", new {itemId = item.ItemId}, new {@class = "averageLink"})
}
</channel>
</rss>
其他问题:
1)我不知道究竟如何实施 “订阅” 链接:分配给@ Model.Url什么样的价值?
2)它会生成html,mabby,我需要将我的feed对象序列化到xml文档中,并用自定义的XmlResult返回它:ActionResult?
编辑1:Mabby我以某种方式可以一起使用内置的类和自定义的饲料模型?
编辑2:我不想使用现有类的原因是因为我需要使用Html.ActionLink()和Url.Action()助手。如果我将feed对象序列化到xml中,我将如何使用这些辅助方法?
感谢您的帮助!
答
您的视图代码正在生成html,而不是rss订阅源所需的xml(您包含的元素如div
和h3
是html的一部分)。
要生成输出RSS的视图,视图的布局应复制RSSstandard。
例如:
@model MyProject.Models.RssModel
@{ Layout = null }
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>@model.FeedTitle</title>
<description>@model.FeedDescription</description>
<link>@model.FeedLink</link>
<lastBuildDate>@model.LastBuildDate</lastBuildDate>
<pubDate>@model.PubDate</pubDate>
<ttl>@model.Ttl</ttl>
@foreach (var item in Model.Items)
{
<item>
<title>@item.Title</title>
<description>@item.Description</description>
<link>@item.Url</link>
<guid>@item.Id</guid>
<pubDate>@item.PublicationDate</pubDate>
</item>
}
</channel>
</rss>
然而,你可能要考虑一个不同的方法:返回从你的控制器操作的结果,将直接生成RSS。您可以在this blog post中看到此方法的示例或在this answer中描述。
您似乎忘记了您之前的问题,rss提要是一个xml文件。把HTML放入它不会工作。 – ZippyV 2013-02-11 13:11:51
那么,我可以做的是将我的自定义feed对象序列化到xml中?如何实现“订阅”链接呢? – 2013-02-11 13:14:25