Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript事件后从控制器加载新页面_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

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})