我有 2 个模型,每个模型都有许多属性 - 对象 1 和对象 2
我在 SQL 数据库中与它们有外键关系 - 对象 1 可以有很多对象 2
在我的 Object2Controller 的 Create() 方法中创建 Object2 后,我将如何将 Object2 与对象 1 的 Guid 相关联?
这是代码:
控制器:
[HttpPost]
public ActionResult Create(Object2 object2)
{
if (ModelState.IsValid)
{
object2.Object2Id = Guid.NewGuid();
db.Object2.Add(object2);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(object2);
}
在这种情况下
我只能看到两个选项:
- 从
- 视图中发回 Object1 GUID 时,请将其预填充模型,就像其他属性一样。 这可以根据您的要求以不同的方式完成(用户选择的下拉列表、预填充到隐藏字段中等)。
- 跟踪当前用户正在使用的 Object1 的服务器。 您可以使用会话对象,甚至使用 TempData 来执行此操作。
编辑
若要从 Object1 详细信息视图创建新的 Object2,请遵循此流程。
首先,详细信息视图上的简单窗体:
@using (var form = Html.BeginForm("Add", "Object2Controller", FormMethod.Get))
{
<input type='hidden' name='Object1ID' value='@Model.Object1ID' />
<submit type='submit' value='Add Object1' />
}
然后,您将在 Object2 的控制器中拥有一个预填充外键的 Add 方法:
[HttpGet]
public ActionResult Add(Guid Object1ID)
{
Object2 newObj = new Object2();
newObj.Object1ID = Object1ID;
return View("MyAddView", newObj);
}
这将指向 Object2 详细信息窗体,该窗体回发到问题中的 Create 方法。