Javascript 使用Asp.Net Core,如何将视图作为新的浏览器选项卡打开,然后在以后再次关闭
虽然我希望避免弹出窗口(由于弹出窗口拦截器等原因),但当单击以在新浏览器选项卡中打开关联视图时,我确实需要某个链接。但是在该视图中(只是一个带有一些用户元素和提交按钮的表单),当它被提交时,我需要让它关闭新选项卡(基本上是将控件返回到原始选项卡) 我想我已经解决了这个问题,将target=“_blank”添加到相关标记中,并在控制器的末尾强制它重定向到CloseTab视图,该视图只不过是调用window.close()的javascript 不幸的是,当打开新选项卡工作时,当它在提交完成后尝试关闭选项卡时,它会失败,“脚本可能只关闭它们打开的窗口” 如何关闭目标为空时打开的选项卡?或者我应该使用一些不同的方法(不是弹出窗口,所以window.open是out)在新选项卡中打开视图吗 我的代码如下: 在调用视图中(前面提到的标记):Javascript 使用Asp.Net Core,如何将视图作为新的浏览器选项卡打开,然后在以后再次关闭,javascript,c#,asp.net-core,Javascript,C#,Asp.net Core,虽然我希望避免弹出窗口(由于弹出窗口拦截器等原因),但当单击以在新浏览器选项卡中打开关联视图时,我确实需要某个链接。但是在该视图中(只是一个带有一些用户元素和提交按钮的表单),当它被提交时,我需要让它关闭新选项卡(基本上是将控件返回到原始选项卡) 我想我已经解决了这个问题,将target=“_blank”添加到相关标记中,并在控制器的末尾强制它重定向到CloseTab视图,该视图只不过是调用window.close()的javascript 不幸的是,当打开新选项卡工作时,当它在提交完成后尝试关
打卡
PunchIn.cshtml:
@model TimePunchViewModel
<form asp-action="PunchIn">
@{
// TODO: user editable fields go here
}
<input type="submit" />
</form>
<form asp-action="PunchIn" method="post">
@{
// TODO: user editable fields go here
}
<input id="submit" type="submit" value="submit" />
</form>
@model TimePunchViewModel
@{
//TODO:用户可编辑字段转到此处
}
TimePunchController.cs:
public IActionResult PunchIn()
{
var model = new TimePunchViewModel();
return View(model);
}
[HttpPost]
public async Task<IActionResult> PunchIn(TimePunchViewModel model)
{
// TODO: save based on model
// close the tab
return View("CloseTab");
}
public IActionResult PunchIn()
{
var模型=新的TimePunchViewModel();
返回视图(模型);
}
[HttpPost]
公共异步任务PunchIn(TimePunchViewModel模型)
{
//TODO:基于模型保存
//关闭选项卡
返回视图(“关闭选项卡”);
}
CloseTab.cshtml:
<body>
<script type="text/javascript">
window.close();
</script>
</body>
window.close();
您可以使用ajax在成功回调函数中提交表单并关闭窗口
PunchIn.cshtml:
@model TimePunchViewModel
<form asp-action="PunchIn">
@{
// TODO: user editable fields go here
}
<input type="submit" />
</form>
<form asp-action="PunchIn" method="post">
@{
// TODO: user editable fields go here
}
<input id="submit" type="submit" value="submit" />
</form>
结果:
好的,我已经让它工作了,但现在我遇到了另一个问题-如果我在该页面/视图上,并且我提交了更改,并且我需要保持页面正常运行(例如显示验证错误或过滤数据),它仍然会关闭选项卡。如何更新此逻辑以避免这种情况?
[HttpPost]
public void PunchIn(TimePunchViewModel model)
{
// TODO: save based on model
}