Entity framework 从单个MVC视图编辑两个对象
我有一个地址表和一个司机表。每个驱动程序在地址表中都有一个带有DriverId的地址。我已经创建了一个viewModel,其中插入了两个表中的数据,并且只返回了一个包含Edit、details和Delete的驱动程序详细信息的视图 当我单击Edit时,我希望能够创建一个视图,该视图将连接两个表并显示记录,包括驱动程序详细信息和地址详细信息,以启用编辑 这是我的司机模型Entity framework 从单个MVC视图编辑两个对象,entity-framework,razor,model-view-controller,asp.net-mvc-5,Entity Framework,Razor,Model View Controller,Asp.net Mvc 5,我有一个地址表和一个司机表。每个驱动程序在地址表中都有一个带有DriverId的地址。我已经创建了一个viewModel,其中插入了两个表中的数据,并且只返回了一个包含Edit、details和Delete的驱动程序详细信息的视图 当我单击Edit时,我希望能够创建一个视图,该视图将连接两个表并显示记录,包括驱动程序详细信息和地址详细信息,以启用编辑 这是我的司机模型 public class DriverViewModel { public tb_DriverDetails Drive
public class DriverViewModel
{
public tb_DriverDetails Driver { get; set; }
public tb_Addresses Addresses { get; set; }
}
这是我在DriverViewmodelControl中的编辑方法
[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";
}
我的问题是,当单击将所选记录的“驱动程序”视图和“编辑”命令合并到一个要编辑的单一视图中时,我是否可以从“驱动程序”视图和“编辑”命令中选择“驱动程序”和“地址”表?您好,下面是我在“编辑”操作下输入的代码
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>
@model MyGroupProject.Models.ViewModel.DriverViewModel
@{
ViewBag.Title=“编辑”;
}
@LabelFor(model=>model.Driver.FirstName,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Driver.FirstName,new{htmlAttributes=new{@class=“form control”}})
@Html.ValidationMessageFor(model=>model.Driver.FirstName,“,new{@class=“text danger”})
@LabelFor(model=>model.Addresses.City,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Addresses.City)
@Html.ValidationMessageFor(model=>model.Addresses.City,“,new{@class=“text danger”})
这对我很有用,感谢您的帮助这是第一个实体框架代码还是使用现有数据库中的EDMX?您使用的是Fluent API吗?pWdst yes EDMX来自现有数据库。。请原谅我的无知,我不知道什么是fluentapi,只是g…..引导了它