2

RSSを生成するには、SyndicationFeedやRss20FeedFormatterなどの組み込みクラスを使用できることを知っています。また、カスタムクラスとaspxビューで実行できることも知っています。

しかし、カスタムフィードオブジェクトとカスタムビューを作成したい場合、かみそりを使用してこれを行うことはできますか?

これが私の見解です:

<?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を生成します。代わりに、フィードオブジェクトをxmlドキュメントにシリアル化し、カスタムXmlResultで返す必要があります:ActionResult?

編集1:マビー私はどういうわけか組み込みのクラスとカスタムフィードモデルを一緒に使用できますか?

編集2:既存のクラスを使用したくない理由は、Html.ActionLink()およびUrl.Action()ヘルパーを使用する必要があるためです。フィードオブジェクトをxmlにシリアル化する場合、これらのヘルパーメソッドをどのように使用しますか?

よろしくお願いします!

4

1 に答える 1

3

ビューコードは、RSSフィードに必要なxmlではなくhtmlを生成しています(htmlの一部であるなどの要素を含めてdivいますh3)。

RSSを出力するビューを作成するには、ビューのレイアウトでRSS 標準を複製する必要があります。

例えば:

@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を直接​​生成するコントローラーアクションから結果を返すことです。このアプローチの例は、このブログ投稿またはこの回答で説明されています。

于 2013-02-11T20:47:15.840 に答える