【问题标题】:How do you render 2 models on a view in asp.net mvc 4?如何在 asp.net mvc 4 的视图上渲染 2 个模型?
【发布时间】:2013-01-11 01:40:41
【问题描述】:

我有一个页面,其中包含一些文本框,这些文本框将保存到名为Values 的表格中,比如说。我显示的文本框将填充下拉列表中的选择。此下拉列表将从数据库中名为DropDownListValues 的另一个表中获取其值。我假设我的控制器将建立在Values 模型上,但我想我对如何将值提供给下拉列表有点困惑。我是将其存储在ViewBag 中还是呈现部分视图?只是想在这里找到最好的方法,因为我对 asp.net mvc 有点陌生。

【问题讨论】:

  • 我的理解是你必须创建一个新的 ViewModel 来保存你的 2 个模型。这样你就可以保持强类型。
  • 我可以有一个强类型的局部视图,这样行吗?这对我来说似乎是最干净的解决方案,否则,我确实喜欢你的建议
  • 请不要使用ViewBag。当您的问题是“如何在控制器和视图之间来回传递这些数据?”时,您几乎应该始终使用视图模型。发布您的相关代码,我相信有人会很乐意帮助您重构以使用视图模型。

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-4


【解决方案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 )

【讨论】:

    【解决方案2】:

    我认为您可以同时使用它们,问题是存储在 ViewBag 中还是渲染部分视图?回答:是的,您可以在需要时同时使用它们。您可以为城市、办公室、少数受欢迎的用户等准备特定的扩展。

    【讨论】:

      【解决方案3】:

      使用ViewModel。这是在评论中,但我不能接受它作为答案,所以我决定发布答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多