0

我有 2 个模型,每个模型都有许多属性 - Object1 和 Object2

我在 SQL db 中与它们有外键关系 - Object1 可以有很多 Object2

在我的 Object2Controller 的 Create() 方法中创建 Object2 后,我如何将 Object2 与 Object 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);
    }
4

1 回答 1

1

在这种情况下,我只能看到两个选项:

  1. 在模型中预填充Object1 GUID,当您从视图中将其发布回来时,就像其他属性一样。这可以根据您的要求以不同的方式完成(用户选择的下拉菜单、预填充到隐藏字段中等)。
  2. 跟踪当前用户正在处理的Object1的服务器。您可以使用Session对象,甚至使用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方法。

于 2012-06-24T05:46:06.823 回答