gpt4 book ai didi

javascript - 当 Controller 返回时,从 javascript 在新选项卡中打开 View

转载 作者:行者123 更新时间:2023-11-28 17:51:54 24 4
gpt4 key购买 nike

我需要在 Controller 成功后打开一个新选项卡, Controller 返回一个View

这是我的方法,但不起作用:

function modify(){

var1= someDataFromDOM;
var2= anotherDataFromDOM;

$.ajax({
method: 'POST',
url: '@Url.Action("ModifyObject", "ControllerName")',
data: {id: var1, status: var2},
success: function (data){
var newTab = window.open("", "_blank", "", true);
newTab.document.body.innerHTML = data;
}
});
}

在 Controller 上

[HttpPost]
public ActionResult ModifyObject(int id, string status)
{
ViewModelA model = new ViewModelA();
model = bd.GetModelA(id, status);
return View("ModifyObject", model);
}

Controller 正确返回 View ,但 newTab 变量具有空值

欢迎任何帮助

最佳答案

我认为问题出在 javascript window.open() 上。除用户事件外,该功能会被浏览器阻止。请参阅herehere

以下是我已经测试过的适合您的目的的解决方法;

<input type="button" hidden="hidden" id="hack" />

$(function () {

var var2 = "test";
var var1 = 1;
var htmlData;
var win;

$.ajax({
method: 'POST',
url: '@Url.Action("ModifyObject", "Controller")',
data: { id: var1, status: var2 },
success: function (data) {
htmlData = data;
$("#hack").trigger("click");
}
});

$("#hack").on("click", function () {
win = window.open("", "_blank");
win.document.body.innerHTML = htmlData;

});
});

但是,像这样打开新选项卡可能不是一个好方法。你的 modify() 所做的并不明显,但我不会使用 ajax 打开新窗口,我会尝试用下面的内容替换它,请检查 here

Html.ActionLink("LinkText", "ModifyObject", "ControllerName", new { Id = "param1", Status = "param2" }, new { target = "_blank" });

更新

根据您的评论尝试此操作;

function modify()
{
var grid = $("#datagrid").data("kendoGrid");
var row = grid.getSelectedRow();

var win = window.open("","_blank")
var var1 = row.fieldID;
var var2 = row.fieldStatus;
var url = '@Url.Action("ModifyObject", "ControllerName")' + '?id=' + var1 + '&status=' + var2;
win.location = url;
}

关于javascript - 当 Controller 返回时,从 javascript 在新选项卡中打开 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com