実際、ASP.NET - MVC 4 の知識が不足しているために発生した問題がいくつかあります。私がやろうとしているのは、ドロップダウンから選択した値を取得し、それをコントローラーに (整数として) 返すことです。私をさらに混乱させるのは、文字列値を返す他の DropDownList が正常に機能していることです。
私のモデル:
public partial class PRODUCT
{
public int ID { get; set; }
public string PRODUCT_NAME { get; set; }
public int CATEGORY_ID { get; set; }
public string LANGUAGE { get; set; }
}
public partial class PRODUCT_CATEGORY
{
public int ID { get; set; }
public string CATEGORY_NAME { get; set; }
public string LANGUAGE { get; set; }
}
My Controller : // ViewBag の設定
ListProductCategory = new List<PRODUCT_CATEGORY>();
ListProductCategory = db.PRODUCT_CATEGORY.ToList();
IList<PRODUCT_CATEGORY> prodCategories = db.PRODUCT_CATEGORY.ToList();
IEnumerable<SelectListItem> selectListCategory =
from c in prodCategories
select new SelectListItem
{
Text = c.CATEGORY_NAME,
Value = c.ID.ToString()
};
ViewBag.ProductCategoryData = selectListCategory;
// アクションを作成
[HttpPost]
public ActionResult Create(PRODUCT product)
{
if (ModelState.IsValid)
{
db.PRODUCTs.Add(product);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
私の見解 :
<div class="editor-label">
@Html.LabelFor(model => model.CATEGORY_ID)
</div>
<div class="editor-field">
@Html.DropDownList("ProductCategories", new SelectList(ViewBag.ProductCategoryData, "Value", "Text"))
@Html.ValidationMessageFor(model => model.CATEGORY_ID)
</div>
DropDown lsit は入力されますが、ProductCategories の値が返されず、値の代わりに 0 が返されます。
助けてください ..