画像の URL、説明、およびそのカテゴリが保存されている xml ファイルがあります。私の見解では、xml ファイルの「カテゴリ名」からも引き出されるドロップダウン リストがあり、選択したカテゴリの画像を表示する必要があります。私は、MVCとhttp://forums.asp.net/t/1580460.aspx/1でドロップダウン リストを作成するいくつかの例に従ってきました。ドロップダウンリストの部分は機能しましたが、画像のURLと説明を取得するのに行き詰まりました。
私のxmlファイルは次のようになります:
<?xml version="1.0" encoding="utf-8" ?>
<SymbolOption>
<Category id="1" name="categoryA">
<image url="A.png" desc="image a"/>
<image url="B.png" desc="image b"/>
<image url="C.png" desc="image c"/>
</Category>
<Category id="2" name="categoryB">
<image url="x.png" desc="image x"/>
<image url="y.png" desc="image y"/>
</Category>
</SymbolOption>
コントローラ:
public class HomeController : Controller
{
public ActionResult Index()
{
var imageFile = Server.MapPath("~/Data/ImageSource.xml");
var category =
from symbolCategory in XDocument.Load(imageFile).Descendants("Category")
select new SelectListItem
{
Value = symbolCategory.Attribute("id").Value,
Text = symbolCategory.Attribute("name").Value
};
var model = new SymbolCategoryViewModel
{
Categories = category
};
return View(model);
}
}
ビューモデル:
public class SymbolCategoryViewModel
{
public string Category { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
意見:
@Html.DropDownListFor(x => x.Category, Model.Categories)
<div id="displayImage">
<img src="@Url.Content("~/Content/img/" + URLfromXML)">
@Html.DisplayFor(image description)
<div>
助けてくれてありがとう。