現在、私たちはクライアントに送信するXML CSSフィードを作成するために多少の処理を行うビューを持っています。ビューからコントローラへの処理の移動
@foreach (Models.BVModels cat in ViewBag.BVSubCategories)
{
<Category>
@if (!string.IsNullOrEmpty(cat.LinkName))
{
<ExternalId>(cat.LinkName)</ExternalId>
}
else
{
<ExternalId>cat.Title</ExternalId>
}
<ParentExternalId>cat.ParentName</ParentExternalId>
<Name>cat.Title</Name>
@if (cat.Brand.ToLower() == "[hardcoded value]" && !string.IsNullOrEmpty(cat.ID))
{
if (!string.IsNullOrEmpty(cat.LinkName) && !string.IsNullOrEmpty(cat.ParentName))
{
<CategoryPageUrl><![CDATA[[URL]/gallery/@cat.ParentName.ToLower()/@cat.LinkName.ToLower()]]></CategoryPageUrl>
}
string imageName = cat.ID + ".jpg";
<ImageUrl>[URL]/imageeditor/@imageName</ImageUrl>
}
else if (cat.Brand.ToLower() == "[BRAND]")
{
if (!string.IsNullOrEmpty(cat.LinkName))
{
<CategoryPageUrl><![CDATA[[URL]/product/category/@cat.ID/@cat.LinkName.ToLower()]]></CategoryPageUrl>
}
string imagename = cat.ID + ".jpg";
<ImageUrl>[URL]/image/getdvimagebypageidandimageid/@cat.ID/1/@imagename</ImageUrl>
}
else
{
if (!string.IsNullOrEmpty(cat.LinkName))
{
<CategoryPageUrl>[URL]</CategoryPageUrl>
}
}
</Category>
}
これをビューに保存する代わりに、コントローラに移動する必要があります。これは一度にフィードを作成するためにすぐに完了しましたが、今は遅くする方法です。もちろん、ハードコーディングされた値と、クリーンアップする必要のある処理がたくさんあります。現在、このcshtmlページには、ViewBagからデータを取り出す@modelディレクティブはありません。私はこれをコントローラにプッシュし、このページをクリーンアップしたいと思います。 ViewBagをControllerに渡して処理することはできますか?私はMVCで錆びていて、正しい方向に小さな押し込みができます。ですから、私はViewBagでこのコントローラのActionResultを呼び出し、以下のようにフォーマットされたXML文字列を返したいと思います。
ありがとうございました。
コントローラ内からRazorコードを使用することはできません。 XmlDocumentまたはLINQ-to-XML(XDocumentで始まる)を使用して、コードからXMLファイルを構築できます。私は[このブログの投稿](https://seattlesoftware.wordpress.com/2008/08/22/serializing-exceptions-to-xml/)に触発されたコードを使用してオブジェクトをXMLにシリアル化しました。あなたはしようとしている –
あなたはRSSフィードとCSSを意味していますか? – Fran
正しい。説明をありがとう。 – john