2013-02-10 54 views
2

我知道要生成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中,我將如何使用這些輔助方法?

感謝您的幫助!

+0

您似乎忘記了您之前的問題,rss提要是一個xml文件。把HTML放入它不會工作。 – ZippyV 2013-02-11 13:11:51

+0

那麼,我可以做的是將我的自定義feed對象序列化到xml中?如何實現「訂閱」鏈接呢? – 2013-02-11 13:14:25

回答

3

您的視圖代碼正在生成html,而不是rss訂閱源所需的xml(您包含的元素如divh3是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中描述。

相關問題