2013-03-10 25 views
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设置动作和控制器。

这是可能的吗?任何帮助深表感谢。

+0

是您'_NewQuestionPartial'强类型? – nemesv 2013-03-10 14:15:14

+0

@nemesv是的。 – 2013-03-10 17:48:04

回答

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

您的意思是在控制器中分配返回部分视图的值吗?问题是我不知道当我从控制器返回部分视图时用户会选择哪种形式。我需要能够选择和分配控制器和操作客户端(在视图中),因为只有在那时我才能够知道哪个控制器和操作需要分配给局部视图。 – 2013-03-10 19:26:26

+0

如果您的主视图呈现带有三个选项卡(div)的页面(如上面的标记片段中所示),并且用户通过单击选项卡来选择视图,则可以在每次注入时简单地将适当的控制器/操作参数传递给PartialView 。我编辑了我的代码,使其更清楚我的意思。 – 2013-03-10 20:55:49

+0

为了澄清,JQuery只需负责显示正确的选项卡/表单,而不是提供操作/控制器值。 – 2013-03-10 21:03:41

相关问题