0
ItemCategory
クラス:Entity FrameworkのでASP.NET MVCを使用して表示
public class ItemCategory
{
[Key]
public int CategoryId { get; set; }
[Required]
[Display(Name ="Category Name")]
public string CategoryName { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
Item
クラスは以下の通りです:
public class Item
{
[Key]
public int ItemId { get; set; }
[Required]
[Display(Name = "Item Name")]
public string ItemName { get; set; }
[DataType(DataType.Currency)]
public decimal Price { get; set; }
[DataType(DataType.Text)]
[Display(Name ="Category Code")]
public int CategoryId { get; set; }
public ItemCategory ItemCategory { get; set; }
[NotMapped]
public string CategoryName { get; set; }
}
これはアイテムコントローラからのコードです:
// GET: Items/Details/5
public async Task<ActionResult> Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var items = db.Items.Include(i => i.ItemCategory);
if (items == null)
{
return HttpNotFound();
}
//var thisItem = db.Items.FirstOrDefault(item => item.ItemId == id);
return View(await db.Items.FindAsync(id));
}
となり、表示コードは以下のようになります。
@model ContactManager.Models.Item
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Item</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ItemCategory.CategoryName)
</dt>
<dd>
@Html.DisplayFor(model => model.ItemCategory.CategoryName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ItemCode)
</dt>
<dd>
@Html.DisplayFor(model => model.ItemCode)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ItemName)
</dt>
<dd>
@Html.DisplayFor(model => model.ItemName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Price)
</dt>
<dd>
@Html.DisplayFor(model => model.Price)
</dd>
<dt>
@Html.DisplayNameFor(model => model.BarCode)
</dt>
<dd>
@Html.DisplayFor(model => model.BarCode)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.ItemId }) |
@Html.ActionLink("Back to List", "Index")
</p>
私はASP.NET MVCおよびEntity Frameworkを初めて使用しています。コードを実行すると、このビューにカテゴリ名が表示されないので、このビューでどのようにカテゴリ名を取得できるのか本当に知りたいです...ありがとう
まだ作業中です! –
'db.Items.FindAsync(id)'が 'ItemCategory'オブジェクトを返し、 'ItemCategory.CategoryName'にどの値が含まれているかを確認します。 – Anadi
はい、ItemCategoryを返しますが、ItemCategoryはビューにnull値を返します。 –