2013-01-04 97 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或呈现局部视图?回答:是的,你可以在需要时使用他们两个。并且您可以为城市,办公室,少数热门用户等准备特定的附加信息。