0

我有一个场景,我需要在 3 个 jQuery-UI 选项卡中呈现 3 个不同的表单,表单的结构及其模型是相同的,但是我需要根据表单的哪个选项卡将表单发布到不同的控制器和 Action 方法包含在。我创建了一个包含该表单的部分视图。显然,我可以创建 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 回答