2013-01-04 145 views
1

我有一個頁面,將有一些文本框保存到名爲Values的表格中,比方說。我顯示的文本框將從下拉列表中填充選擇內容。該下拉列表將從數據庫中的另一個表中獲取名爲DropDownListValues的值。我假設我的控制器將建立在Values模型上,但我想我將如何將值賦給下拉列表有點困惑。我是否將它存儲在ViewBag中或呈現局部視圖?試圖在這裏找到最好的方法,因爲我對asp.net mvc有點新鮮。如何在asp.net mvc 4的視圖中渲染2個模型?

+5

我的理解是,你必須創建一個新的ViewModel來容納你的2個模型。這樣你可以保持你的強壯型。 – mpen

+0

我可以有一個強類型的局部視圖,會工作嗎?這似乎是對我最乾淨的解決方案,否則,我喜歡你所建議的 – Pittfall

+0

請不要使用'ViewBag'。當您的問題是「我如何在Controller和View之間來回傳遞數據?」時,您應該幾乎總是使用視圖模型。發佈您的相關代碼,我相信有人會樂意幫助您重構使用視圖模型。 –

回答

0

使用ViewModel。這是在一個評論,但我不能接受作爲答案,所以我決定發表一個答案

1

是的,你把它們存儲在viewBag

ViewBag.CompanyTypes = _Repository.GetCompanyTypes(). 
       Select(p => new SelectListItem { Text = p.CompanyType1, Value = p.CompanyTypeID.ToString() }); 

,並使用它像:

@Html.DropDownListFor(model=> model.CompanyTypeID, (IEnumerable<SelectListItem>)ViewBag.CompanyTypes) 
0

我認爲你可以使用它們,問題的兩個是店ViewBag或呈現局部視圖?回答:是的,你可以在需要時使用他們兩個。並且您可以爲城市,辦公室,少數熱門用戶等準備特定的附加信息。