【问题标题】:Edit two objects from a single MVC view从单个 MVC 视图编辑两个对象
【发布时间】:2015-03-17 18:42:14
【问题描述】:

我有一个地址表和一个驱动程序表。每个驱动程序在地址表中都有一个带有 DriverId 的地址。我创建了一个视图模型,其中从两个表中插入了数据,并且我返回了一个视图,其中仅包含带有编辑、详细信息和删除的驱动程序详细信息。

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

这是我的 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";
}

我的问题是我是否可以从驱动程序视图和单击编辑命令时将驱动程序和地址表汇集到一个单一视图中的选定记录以进行编辑?

【问题讨论】:

  • 此实体框架代码是先编码还是使用现有数据库中的 EDMX?你在使用 Fluent API 吗?
  • pWdst 是现有数据库中的 EDMX .. 原谅我不知道什么 fluent API 只是 g.....led 它

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


【解决方案1】:

大家好,下面是我在编辑操作下的代码

 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>

这对我有用,感谢您的帮助

【讨论】:

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