0
目前我們有一個視圖,它會執行一些繁重的處理來創建我們發送給客戶端的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>
}
我需要將其移到控制器上,而不是保留在視圖上。這很快就完成了,以便一次創建Feed,但現在是減速的方式。更不用說有很多硬編碼值和一些需要清理的處理。現在這個cshtml頁面沒有@model指令,它從ViewBag中提取數據。我想把它推到控制器並清理這個頁面。我可以將ViewBag傳遞給控制器並進行處理嗎?我在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