当我关闭下拉菜单时,我正在尝试重新加载部分视图_Home
。目前,我可以获取该下拉值来调用另一个方法,并执行将更改模型的逻辑,然后将模型发送回索引。但是,我无法让我的_Home
局部视图重新加载并实际采用此新模型。我似乎无法实际调用public ActionResult _Home(Model model)
方法。我想知道如何传递这个新模型并刷新部分视图。
我试图将模型传递给局部视图,但这似乎没有效果,没有模型传递也不会改变任何内容。我在网上看到了一些有关如何刷新局部视图的示例,但是这些示例都没有传递任何参数。
JavaScript
function OnClose() {
var chart = $("#safetyIncident-chart").data("kendoChart");
var chart2 = $("#qualityError-chart").data("kendoChart");
chart.dataSource.read();
chart2.dataSource.read();
var selectProductionLine = $("#productionLine-dropdown").data("kendoDropDownList").value();
$.ajax({
url: '@Url.Action("UpdateView", "Home")', //Updates model and then calls Index
type: 'post',
dataType: "json",
data: { "selectProductionLine": JSON.stringify(selectProductionLine) }, //Passes in DropDownValue correctly
success: function (data) {
$("#partial").html(result);
$("#Dashboard").load("/Home/_Home"); //Trying to reload the partial view
}
});
}
查看
<div id="Dashboard">
@Html.Partial("~/Views/Home/_Home.cshtml")
</div>
控制器
[HttpGet]
public ActionResult Index()
{
DisplayViewModel dvm = (DisplayViewModel)TempData["dvm"];
if(dvm != null)
{
return View(dvm);
}
//Initializes new dvm if previous was null
return View(dvm);
}
DropDown关闭并且ViewModel刷新后,我试图刷新我的局部视图。
编辑: Controller中的UpdateView方法
[HttpPost]
public ActionResult UpdateView(string selectProductionLine)
{
if(selectProductionLine == null)
{
selectProductionLine = _productionLineService.Collection().FirstOrDefault().Id;
}
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(selectProductionLine, typeof(string));
DisplayViewModel dvm = new DisplayViewModel();
ProductionLine pl = _productionLineService.Find(jsondata);
dvm.ProdLine = new ProductionLineViewModel
{
Id = pl.Id,
CreatedAt = pl.CreatedAt,
Name = pl.Name,
ActiveLine = pl.ActiveLine,
ComputerName = pl.ComputerName,
UPE = pl.UPE
};
TempData["dvm"] = dvm;
return Index();
//PartialView("~/Home/_Home.cshtml", dvm);
}