gpt4 book ai didi

javascript - 使用 MVC、JavaScript 显示弹出窗口

转载 作者:行者123 更新时间:2023-11-28 00:35:10 26 4
gpt4 key购买 nike

我在 MVC 4 中有一个简单的创建表单,想要两个提交功能:(1) 创建和 (2) 创建和打印。创建是一个正常的创建操作并且工作完美。创建和打印应保存对象,然后启动一个弹出浏览器窗口,其中包含新保存对象的数据。原始窗口需要刷新为空白的“创建”表单,为另一条记录做好准备。

解决这个问题的最佳方法是什么?

下面是一个在实践中有效的示例,但我已硬编码了 ID。理想情况下,此 ID 将从刚刚保存的对象动态继承并链接到那里。 JavaScript 是最好的主意还是我应该(可以)从 Controller 启动弹出窗口?

<input type="submit" value="Create" />
<input type="submit"
value="Create & Print"
onclick="window.open('Print/f1ad6330-2978-4ea9-9116-65f861412260'
, 'PRINT'
, 'height=200,width=200');" />

最佳答案

最好的选择是创建另一个返回字符串(last-insert-id)的操作,通过ajax向其发送数据并在javascript中获取last-insert-id,然后您可以使用它打开新窗口。现在假设这是新的 Controller 操作:

    [HttpPost]
public string CreateAndPrint(Object obj)
{
// Save data here / insert record here

if (Request.IsAjaxRequest())
{
// Now get last insert id
string lastInsertId = db.GetLastInsertId; // get last insert id from database
return lastInsertId;
}
}

有一个 JavaScript 函数来发布数据:

    <script type="text/javascript">
function creteAndPrint() {
$.ajax(
{
url : "CreateAndPrint",
type: "POST",
data : $("#from1").serialize(),
success:function(data)
{
var lastInsId = data; // you will get last insert id here.
var secWin = window.open('Print/'+lastInsId
, 'PRINT'
, 'height=200,width=200');
secWin.focus();
}
});
}
</script>

并且仅在创建和打印按钮上调用此函数:

    <input type="submit" value="Create & Print" onclick="creteAndPrint();" />

希望它对你有用。谢谢。

<小时/>

在您发表评论后,我正在编辑我的答案:)

是的!您可以调用相同的 Create 操作来实现我上面解释的相同效果。但为此,您必须在 Create 操作中进行一些更改:

 public string Create(Object obj)
{
// Save data here / insert record here

if (Request.IsAjaxRequest())
{
// Now get last insert id
string lastInsertId = db.GetLastInsertId; // get last insert id from database
return PartialView("_Create", lastInsertId);
}
return View();
}

请注意,当您通过 AJAX 调用此操作时,它将返回一个部分 View ,该 View 仅返回 LAST_INSERT_ID 作为字符串。您只需创建一个简单的部分 View _Create来打印last-insert-id。部分 View 只有两行:

@model string
@Model

这将打印我们从 Controller 操作传递的last-inst-id。

关于javascript - 使用 MVC、JavaScript 显示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582863/

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