0

让我来解释一下这种情况。在下图中,我有一个下拉菜单和一个div框,下拉菜单总是有两个选项,当这个改变时,应该在div框中加载一个PartialView。根据下拉列表(MVC)加载部分视图的最佳方法

当页面首次加载时,应该显示下拉菜单的第一个选项。

enter image description here

现在,我要告诉你我的代码。

我的Razor视图

@model Contoso.MvcApplication.ViewModels.Stats.MonitorViewModel 
@{ 
    ViewBag.Title = "Monitor"; 
} 

<hgroup> 
    <h2>Monitor</h2> 
    <h3>@Model.AssignmentName</h3> 
</hgroup> 

<div> 
    <span>View by: </span>@Html.DropDownListFor(model => Model.SelectedView, Model.ViewBy, new { id = "monitorViewByDropDown" }) 
</div> 

@using (Html.BeginForm(new { id = "monitorForm" })) { 
<div id="monitor-content-view"> 
    @Html.Action("MonitorByClass", new { assignmentId = @Model.AssignmentId }) 
</div> 
} 

所以,当用户改变下拉值,应该有获得通过AJAX(我还没有实现)调用MonitorContentView传递值在它的局部视图。

我正在做的是一个很好的实现?或者还有另一种更好的方法? 我想知道如何加载部分视图的方式是好的。

+0

您可以使用jQuery使用触发加载更改事件。这是一个例子。 [动态加载部分视图](http://stackoverflow.com/questions/11313444/dynamically-load-partial-views/11321563#11321563) – lopezbertoni 2013-03-24 17:28:46

回答

0

如果您在monitor-content-view中有一个复杂的视图,则由MonitorByClassMonitorByTEKS返回,那么最好返回ViewResult。如果每个表示这两个方法的视图都不那么复杂,那么最好返回一个json结果并在客户端填充你的视图。如果两个视图共享通用字段,其中某些字段根据调用的方法隐藏/显示,则这更好。

+0

实际上,每个视图都有自己的视图模型。所以我想这些不会共享相同的属性 – 2013-03-24 18:26:25

相关问题