具有不同细节类型的MVC主细节

时间:2013-09-22 10:56:42

标签: asp.net-mvc asp.net-mvc-4

民间,

环境:ASP .NET MVC 4

在我需要构建的视图中,需要有两个部分。顶部显示了一个表格。根据用户选择的行,我需要在底部部分呈现适当的用户界面。本质上,它是一个主 - 细节视图,除了细节中的控件根据主控部分中的选定行而改变。

我猜我需要创建与每个细节类型相对应的部分视图,并以某种方式以编程方式显示正确的视图。

如果有人能够了解正确的方法,我将不胜感激。任何示例代码或现有示例的链接都将受到高度赞赏。

提前感谢您的帮助。

的问候,
彼得

1 个答案:

答案 0 :(得分:1)

肯定有多种方法可以做到这一点,一种方法是在Action为每个主要细节方案创建一个专用的Controller

public class HomeController : Controller
{
     public ActionResult Detail1(Model model)
     {
         return View(model);
     }

     public ActionResult Detail2(Model model)
     {
         return View(model);
     }
} 

接下来,您将为主表创建可重用的Partial,并根据您的逻辑触发正确的Action(伪代码):

<td>
    @if (<your logic for the detailed view to be displayed>)
    {
        Html.ActionLink("Edit", "Detail1");
    }
    else
    {
        Html.ActionLink("Edit", "Detail2");
    }
</td>

您可以从Detail1Detail2视图呈现主表。 希望我能正确理解你。干杯!

更新 - Ajax

如果您不希望在显示新详细信息时更新整个页面,则可以使用主表中的Ajax.ActionLink并更改HomeController方法以返回{{1每种细节类型。

PartialView

其中<td> @if (<your logic for the detailed view to be displayed>) { Ajax.ActionLink("Edit", "Detail1", options); } else { Ajax.ActionLink("Edit", "Detail2", options); } </td> 指定应使用从控制器返回的详细视图替换的div的options

UpdateTargetId

最后,在主视图中包含public class HomeController : Controller { public ActionResult Master() { return View(); } public ActionResult Detail1() { return PartialView(); } public ActionResult Detail2() { return PartialView(); } } 脚本(默认情况下位于jquery.unobtrusive包中):

~/bundles/jqueryval