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

相關問題