2012-06-24 1 views
0

나는 2 개 모델, 각각은 많은 속성이 - 오브젝트 1 및 Object2MVC3 - 컨트롤러 방법은 다른 테이블/모델에서 GUID로 모델 데이터 및 준을 만드는

내가 SQL의 DB에 그들과 외래 키 관계를 맺고을 - 오브젝트 1 수 많은 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); 
    } 

답변

1

:

  1. 모델의 오브젝트 1 GUID를 미리 작성하는 경우 다른 속성과 마찬가지로보기에서 다시 게시합니다. 이것은 요구 사항에 따라 다른 방법으로 수행 될 수 있습니다 (사용자가 선택한 드롭 다운, 숨겨진 필드에 미리 채워짐 등).
  2. Object1 현재 사용자가 작업하고있는 서버에서 추적하십시오. 세션 개체를 사용하거나 TempData을 사용하여이 작업을 수행 할 수 있습니다.

편집하는 것은

오브젝트 1 상세보기에서 새 Object2를 만들려면,이 흐름을 따릅니다.

첫째, 상세 뷰에 대한 간단한 양식 :

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

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

그런 다음 당신이 이 외래 키를 사전이-채우는 Object2의 컨트롤러 방법을 추가해야합니다

이것은 Object2 세부 양식을 나타내며 에 게시됩니다.을 작성합니다. 방법에 대한 질문.

+0

이상적으로 Object1의 상세보기에서 사용자가 Object2를 만들기 위해 클릭 할 수있는 동작 버튼이 필요합니다. 그래서 협회가 만들어 져야합니다. 가능한 1 단계는이 부분을 달성 할 수 있습니까? 웹이나 경험을 통해 어떤 예를 들어 볼 수 있습니까? –

+0

@HelloJonnyOh 시나리오에 대한 내 대답에 몇 가지 세부 정보를 추가했습니다. 내 업데이트를 확인하십시오. – McGarnagle

+0

MyAddView에 무엇을 넣을 수 있습니까? 나는 대부분 그 자리에 있고 테스트 할 준비가되어있다. –

관련 문제