MVC3 - метод контроллера для создания данных модели и связи с Guid из другой таблицы / модели

У меня есть 2 модели, каждая из которых имеет много свойств - Object1 и Object2

У меня есть отношения внешнего ключа с ними в SQL DB - Object1 может иметь много Object2

Как создать Object2 в методе Create() моего Object2Controller, как мне связать Object2 с Guid объекта 1?

Вот код:

контроллер:

    [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);
    }

1 ответ

Решение

Я вижу только два варианта в этом сценарии:

  1. Предварительно заполните GUID Object1 в модели, когда вы отправляете его обратно из представления, как и другие свойства. Это может быть выполнено различными способами в зависимости от ваших требований (выбранный пользователем раскрывающийся список, предварительно заполненный в скрытое поле и т. Д.).
  2. Следите за тем сервером, на котором Object1 работает текущий пользователь. Вы можете сделать это с помощью объекта Session или даже с помощью TempData.

редактировать

Чтобы создать новый объект Object2 из подробного представления Object1, выполните следующие действия.

Во-первых, простая форма в подробном представлении:

@using (var form = Html.BeginForm("Add", "Object2Controller", FormMethod.Get)) 
{ 
    <input type='hidden' name='Object1ID' value='@Model.Object1ID' />
    <submit type='submit' value='Add Object1' />
}

Затем у вас будет метод Add в контроллере для Object2, который предварительно заполняет внешний ключ:

[HttpGet]
public ActionResult Add(Guid Object1ID)
{
    Object2 newObj = new Object2();
    newObj.Object1ID = Object1ID;
    return View("MyAddView", newObj);
}

Это будет указывать на детальную форму Object2, которая отправляет обратно в метод Create в вашем вопросе.

Другие вопросы по тегам