在ASP.NET MVC5
Entity Framework
项目中,我有两个表Account
,AccountDetail
(AccountDetail
Account
引用),两个对应模型AccountModel
和AccountDetailModel
。
在视图中(例如:RegistrationView
),如何将视图中的输入数据保存到上面的两个表中。因为通过右键单击控制器创建RegistrationView
时,我只能选择一个模型。
答案 0 :(得分:2)
您可以关联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();
}
}
如果要更新记录,如果应插入或更新相关详细记录,则需要检查一些代码。
答案 1 :(得分:0)
我不确定我是否理解正确但是如果你想让你的模型在同一个视图中,那么只需创建一个像
这样的类public class RegistrationViewModel
{
public AcountModel AcountModel { get; set; }
public AcountDetailModel AcountDetailModel { get; set; }
}
并将此类用于viewmodel