0

3 つの jQuery-UI タブ内に 3 つの異なるフォームをレンダリングする必要があるシナリオがあります。フォームの構造とそのモデルは同じですが、フォームのタブに応じてフォームを別のコントローラーとアクション メソッドに投稿する必要があります。そのフォームを含む部分ビューを作成しました。明らかに、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 を使用してアクションとコントローラーを設定できます。

これはまったく可能ですか?どんな助けでも大歓迎です。

4

1 に答える 1

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))
        {
            ...
        }
于 2013-03-10T17:51:16.123 に答える