5

実際、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 が返されます。

助けてください ..

4

2 に答える 2

2

文字列を返す他のドロップダウンリストは何ですか? 彼らが返す文字列はモデルの一部であるに違いありません。ProductCategoriesモデルにプロパティがありません。変更してみてください:

@Html.DropDownList("ProductCategories", new  SelectList(ViewBag.ProductCategoryData, "Value", "Text"))          

に:

@Html.DropDownList("CATEGORY_ID", new  SelectList(ViewBag.ProductCategoryData, "Value", "Text"))          
于 2013-05-21T03:57:20.493 に答える
1

それを試してみてください

モデルに追加のプロパティを追加する

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 int SelectedCATEGORY_ID { get; set; }**
}


@Html.DropDownListFor(**model=>model.SelectedCATEGORY_ID** , new  SelectList(ViewBag.ProductCategoryData, "Value", "Text"))  

SelectedCATEGORY_ID プロパティでドロップダウンの選択値を取得できるようになりました。


また

 @Html.DropDownListFor(**model=>model.CATEGORY_ID ** , new  SelectList(ViewBag.ProductCategoryData, "Value", "Text"))  


    Now you can get the dropdown selected value in the CATEGORY_ID property .
于 2013-05-21T03:55:25.430 に答える