在我的ASP.NET MVC5
和Entity Framework
项目中,我有两个表Account
、AccountDetail
(AccountDetail
引用了Account
)以及两个相应的模型AccountModel
和AccountDetailModel
。
在视图(例如:RegistrationView
)中,如何将视图中输入的数据保存到上面的两个表中。因为当右键单击控制器创建RegistrationView
时,我只能为其选择一个型号。
您可以链接AccountModel
和AccountDetailModel
,然后使用AccountModel
:
public AccountModel
{
public int Id { get; set; }
public string Name { get; set; }
public IList<AccountDetailModel> Details { get; set; }
}
public AccountDetailModel
{
public int Id { get; set; }
public string Description { get; set; }
}
视图中:
@model AccountModel
. . .
@Html.HiddenFor(m => m.Id)
@Html.TextboxFor(m => m.Name)
@for (int i = 0; i < Model.Details.Count; i++)
{
@Html.HiddenFor(m => m.Details[i].Id)
@Html.TextboxFor(m => m.Details[i].Description)
}
在行动中,一些代码如下:
[HttpPost]
public ActionView Insert(AccountModel model)
{
using (var dbContext = new DbContext())
{
var account = new Account();
account.Id = model.Id;
account.Name = model.Name;
account.Details = new List<AccountDetail>();
dbContext.AddObject(account);
foreach (var modelDetail in model.Details)
{
var accountDetail = new AccountDetail();
accountDetail.Id = modelDetail.Id;
accountDetail.Description = modelDetail.Description;
account.Details.Add(accountDetail);
dbContext.AddObject(accountDetail);
}
dbContext.SaveChanges();
}
}
如果你想更新记录,你需要一些代码来检查是否应该插入或更新相关的详细记录。
我不确定我是否正确理解你,但如果你想让两个模型都在同一个视图中,那么只需创建一个类似的类
public class RegistrationViewModel
{
public AcountModel AcountModel { get; set; }
public AcountDetailModel AcountDetailModel { get; set; }
}
并将此类用于视图模型