Asp.net mvc 3 MVC3-用于创建模型数据并与另一个表/模型的Guid关联的控制器方法

Asp.net mvc 3 MVC3-用于创建模型数据并与另一个表/模型的Guid关联的控制器方法,asp.net-mvc-3,model,controller-action,Asp.net Mvc 3,Model,Controller Action,我有两个模型,每个模型都有许多属性——Object1和Object2 我在SQL db中与它们有外键关系-Object1可以有许多Object2 在Object2Controller的Create()方法中创建Object2时,如何将Object2与对象1的Guid关联 以下是代码: 控制器: [HttpPost] public ActionResult Create(Object2 object2) { if (ModelState.IsValid)

我有两个模型,每个模型都有许多属性——Object1和Object2

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

在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的服务器。您可以使用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详细信息表单,该表单发回您问题中的Create方法。

    理想情况下,在Object1的详细信息视图上,我需要一个用户可以单击以创建Object2的操作按钮。因此,应该从中建立关联。步骤1是否可能完成这一部分?您能给我指出web上或您的经验中的任何示例吗?@HelloJonnyOh我在回答该场景时添加了一些详细信息,请检查我的更新。@MyAddView将是您用于添加新Object2的现有视图(在这种情况下,我假设您使用Object2模型本身作为视图模型)。如果我的第一个视图具有@Html.HiddenFor(Model=>Model.Object1Id),并且我的第一个视图中的链接是使用@Html.ActionLink(“创建”、“创建”、“Object1”、new{area=“Area1”})生成的,那么我如何使Object1Id可用,以便我的Object2控制器中的Create()方法可以访问Object1Id?
    [HttpGet]
    public ActionResult Add(Guid Object1ID)
    {
        Object2 newObj = new Object2();
        newObj.Object1ID = Object1ID;
        return View("MyAddView", newObj);
    }