2013-03-10 1 views
0

3 개의 다른 폼을 3 개의 jQuery-UI 탭 내에 렌더링해야하는데, 폼의 구조와 모델은 동일하지만 게시해야합니다. 다른 컨트롤러 및 폼에있는 폼에 포함 된 탭에 따라 폼으로 변환 할 수 있습니다. 해당 폼을 포함하는 부분 뷰를 생성했습니다. 분명히 3 개의 다른 부분 뷰를 3 개의 다른 컨트롤러에 게시 할 수 있지만 매우 비효율적 인 것으로 보입니다. 그 수는 어떻게 든 그 안에 포함 된 양식이이에 포함 된 것 탭을 기반으로 게시하는 컨트롤러와 액션을 변경하는 부분보기를 말할 경우부분 뷰 내부의 폼에 컨트롤러와 액션을 동적으로 할당합니다.

궁금하네요

뭔가처럼 :.

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">New Question </a><img src="@Url.Content("~/Content/images/FAQ.png")" /></li> 
    <li><a href="#tabs-2">New Idea </a> <img src="@Url.Content("~/Content/images/idea.png")" /></li> 
    <li><a href="#tabs-3">New Bug</a> <img src="@Url.Content("~/Content/images/bug-icon.png")" /></li> 
    </ul> 
    <div id="tabs-1"> 
    @Html.Partial("_NewQuestionPartial")//this form posts to: Controller=Home and Action=Question 
    </div> 
    <div id="tabs-2"> 
    @Html.Partial("_NewQuestionPartial")//I want this form to post to: Controller=Support and Action=Idea 
    </div> 
    <div id="tabs-3"> 
    @Html.Partial("_NewQuestionPartial")//I want this form to post to: Controller=Support and Action=NewBug 
    </div> 
</div> 

어떻게 든 부분 뷰에 변수를 전달할 수 있다면 jQuery로 액션과 컨트롤러를 설정할 수 있습니다.

이 모든 것이 가능합니까? 어떤 도움이라도 대단히 감사합니다.

+0

이인가는'_NewQuestionPartial'는 강력한 형식의? – nemesv

+0

@nemesv 예입니다. –

답변

1

ViewBag 필드 (또는 더 좋게도 ViewModel의 속성)를 컨트롤러의 이름과 게시 할 뷰의 이름이 포함 된 부분 뷰에 전달한 다음 뷰에서 해당 값을 적절한 인수에 삽입 할 수 있습니다 BeginForm 도우미의. 주 화면에서

:

@{ 
<div id="tabs"> 
    <ul> 
     ... 
    </ul> 
    <div id="tabs-1"> 
      ViewBag.Controller = "Home"; 
      ViewBag.Action = "Question"; 
      Html.Partial("_NewQuestionPartial"); 
    </div> 
    <div id="tabs-2"> 
      ViewBag.Controller = "Idea"; 
      ViewBag.Action = "Question"; 
      Html.Partial("_NewQuestionPartial"); 
    </div> 
    <div id="tabs-3"> 
      ViewBag.Controller = "Idea"; 
      ViewBag.Action = "NewBug"; 
      Html.Partial("_NewQuestionPartial"); 
    </div> 
</div>     
} 

그리고 부분보기에

:

 @using (Html.BeginForm((string)ViewBag.Action, (string)ViewBag.Controller)) 
     { 
      ... 
     } 
+0

부분 뷰를 반환하는 컨트롤러에 해당 값을 할당한다는 의미입니까? 문제는 컨트롤러에서 부분 뷰를 반환 할 때 사용자가 선택할 폼을 정확히 알 수 없다는 것입니다. 그 시점에서만 컨트롤러와 액션을 부분 뷰에 할당해야한다는 것을 알 수 있기 때문에 뷰에서 컨트롤러와 액션 클라이언트 측을 선택하고 할당 할 수 있어야합니다. –

+0

위의 마크 업 조각과 같이 세 개의 탭 (divs)이있는 페이지를 기본보기에서 렌더링하고 사용자가 탭을 클릭하여보기를 선택하면 사용자가 삽입 할 때마다 적절한 컨트롤러/액션 매개 변수를 PartialView에 전달할 수 있습니다 . 내가 의미하는 바를 명확하게하기 위해 코드를 편집했습니다. –

+0

JQuery는 작업/컨트롤러 값을 제공하는 것이 아니라 올바른 탭/양식을 표시하기 만하면됩니다. –

관련 문제