Javascript事件后从控制器加载新页面
我想处理单击的互动程序中的事件(称为Javascript事件后从控制器加载新页面,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我想处理单击的互动程序中的事件(称为tileClicked),该事件将使用tileClicked中的事件数据,并用该数据重新加载当前视图 例如,tileClicked可能包含tileId=10。该数据将被传递到主控制器的ChangeOpenNowReportActionResult,该代码以返回视图(viewName:“EmbeddeDashboard”)结束。目前,embeddedashboard的第一次加载工作正常 在EmbeddeDashboard视图的脚本区域中有以下事件。当我执行til
tileClicked
),该事件将使用tileClicked
中的事件数据,并用该数据重新加载当前视图
例如,tileClicked
可能包含tileId=10
。该数据将被传递到主控制器的ChangeOpenNowReport
ActionResult
,该代码以返回视图(viewName:“EmbeddeDashboard”)
结束。目前,embeddedashboard
的第一次加载工作正常
在EmbeddeDashboard视图的脚本区域中有以下事件。当我执行tileClicked
事件时,控制器正在从{tile:tileId}
代码中获取正确的信息,但新视图没有加载
JS
dashboard.on("tileClicked", function (event) {
var tileId = event.detail.tileId;
var url = '@Url.Action("ChangeOpenNowReport", "Home")';
$(document).load(url, { tile: tileId });
});
主控制器:ChangeOpenNowReport
public async Task<ActionResult> ChangeOpenNowReport(string tile)
{
...
return View(viewName: "EmbedDashboard", model: embedConfig);
}
public异步任务ChangeOpenNowReport(字符串平铺)
{
...
返回视图(视图名称:“EmbedDashboard”,型号:embedConfig);
}
如果您想替换视图中的数据,我建议使用局部视图和ajax。您可以在javascript中执行以下操作,这将命中控制器(返回部分视图),然后使用部分视图填充容器(在本例中称为reportContainer):
dashboard.on("tileClicked", function (event) {
var tileId = event.detail.tileId;
$.ajax({
url: "/Home/ChangeOpenNowReportPartial",
data: {
tile: tileId
},
cache: false,
type: "POST",
success: function (data) {
$("#reportContainer").empty();
$("#reportContainer").html(data);
},
error: function (response) {
alert("error : " + response);
}
})
});
此脚本将点击HomeController的ChangeOpenNowReport操作,该操作将返回部分视图。控制器操作需要以下内容:
[HttpPost]
public ActionResult ChangeOpenNowReportPartial(string tile)
{
...
return PartialView(viewName: "EmbedDashboard", model: embedConfig);
}
这样做的另一个好处是不会重新加载页面,因为它是用ajax完成的
请注意,这假设在主视图中有一个id为
reportContainer
的div,其中包含报表的视图代码。如果您发布代码以供查看,我可以对这个答案进行详细说明。$(document).load(url,{tile:tileId})代码>将视图结果完全替换为所有文档。这是你想要的吗?使用div容器进行更改可能会解决这个问题,如果我能将其加载到名为#dashboardContainer
的容器中,那就太好了。我的运气就更差了。test$(“#dashboardContainer”).load(url,{tile:tileId})很高兴我能帮忙。