Models
次のようなビューモデルがある場合は、MVCアプリケーションのディレクトリにビューモデル(よく理解された構造化された方法でデータを表すために使用されるクラスの単なる名前です)を作成します。
public class NewsItemViewModel
{
public int Id { get; set; }
public string Body { get; set; }
}
NewsItemViewModel
コントローラでアクションを作成して、XMLからのインスタンスを抽出します。LINQ-to-XMLを使用します。ディレクトリに名前の付いたコントローラーがあるとNewsController
しましょう。Controllers
public class NewsController : Controller
{
public ActionResult Index()
{
// replace XElement.Parse(...) below to your own routine to load the XML file
var newsItems = (from news in XElement.Parse(@"<newsitems>
<news id=""1"">
<body>
<p>lorem ipsum <h2>dolor</h2>.</p>
</body>
</news>
</newsitems>").Descendants("news")
let body = news.Descendants("body").First()
select new NewsItemViewModel {Id = (int)news.Attribute("id"), Body = body.Value });
return View(newsItems);
}
}
次に、のビューを作成しますNewsController.Index
(私の例に従うと、そうなりますViews/News/Index.cshtml
)。
@model IEnumerable<YourApplicationNameSpace.Models.NewsItemViewModel>
@foreach(var newsItem in Model)
{
<div class="newsitem">
@Html.Raw(newsItem.Body)
</div>
}
いくつかのメモ:
- あなたがXMLの作成者であるか、そうでなければXMLのソースを信頼していると思います。そうでない場合は、
NewsItemViewModel.Body
プロパティを前処理して、潜在的に危険なHTMLまたはスクリプトを削除し、悪意のあるコンテンツがサイトを壊したり、さらに悪化させたりしないようにすることを検討します。
- XMLの各要素の
body
ノードでHTMLコンテンツをラップして、HTMLコンテンツがXMLファイルを壊さないようにし、XMLファイルを正常に解析できるようにします。news
CDATA