从单个MVC视图编辑两个对象

时间:2015-01-19 17:11:51

标签: entity-framework razor model-view-controller asp.net-mvc-5

我有一个地址表和一个驱动程序表。每个驱动程序在地址表中都有一个带有DriverId的地址。我已经创建了一个viewModel,其中从两个表中插入数据,并且我已经使用Edit,Details和Delete返回了仅用于驱动程序详细信息的视图。

当我点击编辑时,我希望能够创建一个视图,该视图将连接两个表并显示包含驱动程序详细信息和地址详细信息的记录以启用编辑。

这是我的DriverViewModel

public class DriverViewModel
{
    public tb_DriverDetails Driver { get; set; }
    public tb_Addresses Addresses { get; set; }
}

这是我在DriverViewmodelControl中的Edit方法

[HttpGet]
public PartialViewResult Edit(int? id)
{
    tb_DriverDetails newDriver = db.tb_DriverDetails.Find(id);

    return PartialView(newDriver);
}

正如您所看到的那样只适用于驱动程序,因为我还在cshtml文件中使用了驱动程序详细信息,如下所示:

@model MyGroupProject.tb_DriverDetails

@{
    ViewBag.Title = "Edit";
}

我的问题是,在点击时,我可以从驱动程序视图和编辑命令将所选记录的驱动程序和地址表汇总到单个视图进行编辑吗?

1 个答案:

答案 0 :(得分:0)

下面的嗨大家是我在编辑操作

下面的代码
 public PartialViewResult Edit(int? id)
        {

            DriverViewModel driverView = new DriverViewModel();
            driverView.Driver = (from b in db.tb_DriverDetails
                where
                    b.DriverID == id
                select b).SingleOrDefault();
            driverView.Addresses = (from b in db.tb_Addresses 
                                    where b.DriverID == id select b).SingleOrDefault();

            return PartialView(driverView);
        }

然后在Edit.cshtml中我包含了我的@model,如下所示

@model MyGroupProject.Models.ViewModel.DriverViewModel

@{
    ViewBag.Title = "Edit";
}

<div class="form-group">
            @Html.LabelFor(model => model.Driver.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Driver.FirstName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Driver.FirstName, "", new { @class = "text-danger" })
            </div>
        </div>
  <div class="form-group">
            @Html.LabelFor(model => model.Addresses.City, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class="checkbox">
                    @Html.EditorFor(model => model.Addresses.City)
                    @Html.ValidationMessageFor(model => model.Addresses.City, "", new { @class = "text-danger" })
                </div>
            </div>
        </div>

这对我有用,谢谢你的帮助