民间,
环境:ASP .NET MVC 4
在我需要构建的视图中,需要有两个部分。顶部显示了一个表格。根据用户选择的行,我需要在底部部分呈现适当的用户界面。本质上,它是一个主 - 细节视图,除了细节中的控件根据主控部分中的选定行而改变。
我猜我需要创建与每个细节类型相对应的部分视图,并以某种方式以编程方式显示正确的视图。
如果有人能够了解正确的方法,我将不胜感激。任何示例代码或现有示例的链接都将受到高度赞赏。
提前感谢您的帮助。
的问候,
彼得
答案 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>
您可以从Detail1
和Detail2
视图呈现主表。
希望我能正确理解你。干杯!
更新 - 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