我正在尝试使用MVC4构建仪表板。我使用Render.Action()将仪表板小部件填充为部分视图,填充了我的仪表板视图。
<div class="row-fluid">
<div class="dashboard">
<div class="dashboard2Col">
<div class="dashboardCol">
@for (int c1 = 0; c1 < Model.Count; c1 = c1 + 2)
{
Html.RenderAction("DashboardItem_" + Model[c1].DashboardCode, "MyDashboard",
new { dashboardTitle = Model[c1].DashboardTitle });
}
</div>
<div class="dashboardCol">
@for (int c2 = 1; c2 < Model.Count; c2 = c2 + 2)
{
Html.RenderAction("DashboardItem_" + Model[c2].DashboardCode, "MyDashboard",
new { dashboardTitle = Model[c2].DashboardTitle });
}
</div>
</div>
</div>
每个仪表板小部件都是一个局部视图,它具有与之关联的控制器操作方法,具有[ChildActionOnly]属性。
[ChildActionOnly]
public ActionResult DashboardItem_AllEvents(string dashboardTitle)
{
DI_AllEvents_VM model = new DI_AllEvents_VM();
model.DashboardTitle = dashboardTitle;
model.Events = GetAllEvents().Where(x => x.IsUpdated == false).ToList();
return View(model);
}
[HttpPost]
public ActionResult DashboardItem_AllEvents(DI_AllEvents_VM model, FormCollection form)
{
foreach(var e in model.Events)
{
if(e.IsChecked)
{
var i = model.Events.Where(x => x.EventId == e.EventId).FirstOrDefault();
i.IsUpdated = true;
}
}
Session["Events"] = model.Events;
var updatedEvents = GetAllEvents().Where(x => x.IsUpdated == false).ToList();
model.Events = updatedEvents;
return PartialView("DashboardItem_AllEvents", model);
}
仪表板小部件适用于创建只读小部件。但我需要创建一个具有搜索功能的仪表板小部件,因此需要回发。 我尝试使用提交按钮在部分视图中嵌入部分视图。但是,当我单击提交按钮时,整个仪表板索引页面将重新加载,而不仅仅是仪表板小部件。
有什么建议吗?
答案 0 :(得分:0)
研究主题“AJAX”。基本上,您最有可能想要编写捕获该表单的提交事件的javascript,并使用XMLHttpRequest()将其发送到服务器,并且服务器应仅回复该窗口小部件的数据或HTML fragmet。