mvc4 @ Html.DropDownListFor使用两个模型或实体?

时间:2014-03-21 01:11:22

标签: asp.net-mvc asp.net-mvc-4 html.dropdownlistfor

我是MVC的新手。

我有两个表:第一个存储供应商的信息,另一个存储订单详细信息。我想在下拉列表中使用供应商表的值。

@model Ore.Domain.Entities.OrderDetail

   @{
      ViewBag.Title = "";
}

<h2> </h2>


@using (Html.BeginForm())
{
       <div>vendor: @Html.DropDownListFor(x=>x.Vendor,’**how to use the value from another entities or models?** ’)</div>
       <div>Contract Number: @Html.EditorFor(x=>x.ContractNo)</div>

谢谢

2 个答案:

答案 0 :(得分:1)

这是一个很好的例子,当你需要脱离DO并创建一个混合视图时,它包含复合DO,如父项和List项目列表或其组合。它越像你的DO,就越有可能利用自动映射器等映射技术。

答案 1 :(得分:0)

只为您的视图特别介绍一个模型。我们称之为OrderDetailViewModel:

public class OrderDetailViewModel
{
    public Ore.Domain.Entities.OrderDetail Order {get;set;}
    public IEnumerable<SelectListItem> Vendors {get; set;}
}

然后在你看来:

@model OrderDetailViewModel

<h2> </h2>


@using (Html.BeginForm())
{
       <div>vendor: @Html.DropDownList("Vendor", Model.Vendors)</div>
       <div>Contract Number: @Html.EditorFor("ContractNo", Model.ContractNo)</div>

或者只是通过ViewBag传递供应商: 在控制器中:

ViewBag.Vendors = // populate items as new List<SelectListItem>()

在视图上:

<div>vendor: @Html.DropDownListFor(n=>n.Vendor, (List<SelectListItem>)ViewBag.Vendors)</div>