【发布时间】:2017-03-27 17:37:29
【问题描述】:
我有一个下拉列表,用户在下拉列表中选择一个选项,然后根据该值填充一个仪表板。我的问题是当用户单击浏览器中的后退按钮时,我如何保留下拉列表值以及仪表板值。我尝试了 OutputCache 但输出缓存仅用于缓存呈现的 HTML 而不是数据,我尝试了内存缓存但也不起作用。
型号:
public class InternalViewModel
{
public int totalclients { get; set; }
public int clientid { get; set; }
public DateTime? AsOFdate { get; set; }
}
控制器:
public ActionResult Dropdownlist()
{
InternalViewModel app = new InternalViewModel();
app.totalclients = db2.AppClients.Count();
IEnumerable<SelectListItem> clients = db2.AppClients.Select(c => new SelectListItem
{
Value = c.ClientID.ToString(),
Text = c.ClientName
});
ViewBag.clients = clients;
return PartialView(app);
}
查看:
_dropdownlist.cshtml
<div>
@(Html.Kendo().DropDownListFor(model => model.clientid)
.Name("clientid")
.DataTextField("Text")
.DataValueField("Value")
.Filter("contains")
.OptionLabel("--Select --")
.BindTo((System.Collections.IEnumerable)ViewBag.clients)
.HtmlAttributes(new { @id = "dropdown2", @class = "form-control" })
)
</div>
$('#dropdown2').change(function () {
var selectedID = $(this).val();
$('#RecDashboard').load("/InternalRec/Index", { clientid: selectedID }, function () {
$("#recstatus").load("/AppRec/Index", { clientid: selectedID })
})
基于下拉列表值 - 调用 internalrec 控制器和 app rec 控制器。 InternalRec 控制器用于显示仪表板。而 AppRec 显示另一种仪表板。两个仪表板都由下拉列表选择驱动。
InternaRec 返回一个带有仪表板的视图,为了代码简洁,我没有包括所有这些。
但它是这样的
public ActionResult InternalRec(int? clientid)
{
//some stuff is done
//values to be displayed on dashboard are computed, all these values need clientid.
return PartialView();
}
因此,当用户单击浏览器上的后退按钮并返回此页面时。我希望用户能够看到选定的下拉列表值以及仪表板值,基本上不应该刷新页面。我怎样才能做到这一点?
谢谢
【问题讨论】:
标签: asp.net-mvc-4 caching drop-down-menu outputcache memorycache