2013-05-21 35 views
2

其實我有一些問題,這是因爲缺乏在ASP.NET-MVC 4中的知識而發生的。 我想要做的是從下拉列表中獲取選定的值並返回它到控制器(如整數)。是什麼讓我更加困惑的是其他DropDownList這是返回字符串值工作正常。從@ html.DropDownList返回int值

我的模型:

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; } 
} 

我的控制器: //填充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而不是值。

請幫助..

回答

1

什麼其他dropdownlists正在返回字符串?我敢打賭,他們正在返回的字符串是模型的一部分。您的模型沒有ProductCategories屬性。嘗試改變:

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

要:

@Html.DropDownList("CATEGORY_ID", new SelectList(ViewBag.ProductCategoryData, "Value", "Text"))   
+0

它的工作原理!非常感謝。起初我認爲第一個參數中的名稱僅供參考,所以我只是把我喜歡的任何東西。看起來像這個ASP.NET有很長的路要走對我來說,一百萬感謝幫助。 :-) – anevil

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 . 
+0

型號更新,並HtmlDropDownList修改,但我得到了一個錯誤說「無法轉換lambda表達式到類型‘串’,因爲它不是同時應用HTML部分委託類型。還有其他的事情我應該改變嗎? – anevil

+1

將DropDownList更改爲DropDownListFor – 2013-05-21 04:03:32

+1

感謝並且是它的工作!感謝很多朋友! – anevil