javascript - 为什么我的 JavaScript 代码在我的 ASP.NET Web 表单页面上不起作用?
问题描述
我在我的网页表单页面中遇到了表单提交问题。我有一个功能,应该在通过选择 OK 确认后,执行 adocument.forms.submit
并将用户发送到另一个页面。
尝试在 Chrome 中调试时,我没有收到任何 JavaScript 错误,并且在尝试单步执行 C# 函数时我根本没有收到异常。在 JavaScript 输入提交表单方面有更多经验的人可以协助解决这个问题,或者用给定的代码向我展示一个更好的方法吗?
protected virtual void WriteCancelDiv(string claim_id, string promotion_id)
{
string innerHtml = "<form action=\"TestPath/claim_cancel.aspx\" method=post><input type='hidden' name='claim_id' value='" + claim_id + "'><input type='hidden' name='promotion_id' value='" + promotion_id + "'>";
innerHtml += @"<script>
debugger;
function Clicked(){
var b = confirm(""This cannot be undone. Are you sure you want to cancel?"");
if (!b) {return;}
else {document.forms[0].submit();}
}
</script>
<input class=""btn btn-sm btn-primary"" type=""submit"" value=""Cancel Claim"" onClick=""Clicked();"">
</form>";
cancel_div.InnerHtml = innerHtml;
}
解决方案
将客户端逻辑混合到 ASP.NET Web 表单中可能是一件相当艰巨的事情。在您的代码中,您将 HTML(包括表单元素)注入到 div 中。这样做的问题是,每个 ASP.NET Web 控件(包括您的 div)都已经在一个巨大的包装表单元素中,以确保这些控件的回发。
ASP.NET Web 表单在客户端呈现为简单的 HTML,这就是它的工作原理。你所看到的每件事物周围总是有一个巨大的表单元素。不幸的是,将一个表单元素添加到另一个表单元素不是有效的 HTML。所以你的方法是行不通的。
我不会在这里提供任何代码,但会给你一个关于我将如何解决这个问题的描述。
如果我没记错的话,这就是您要实现的目标:
单击按钮 A时,会出现另一个按钮 B。首先单击该按钮 B会出现一个确认对话框,询问用户他/她是否真的想要执行该任务。如果是这样,用户将被重定向到另一个页面。
我会这样做:
- 您将按钮 B添加为另一个隐藏可见性的服务器端控件。
- 在按钮 A的单击事件处理程序中,您将按钮 B的可见性设置为可见。
- 您可以将确认对话框添加到按钮 B的onClientClick属性。
- 在按钮 B的单击事件处理程序中,您重定向到所需的页面。
推荐阅读
- tabulator - 当我开始编辑单元格时,制表符在自动完成中显示值而不是标题
- infragistics - 如何根据来自 infragistics ignite-ui 的 igGrid 计数对分组行进行排序?(jQuery)
- python - Pyinstaller 和 Python-Markdown - ImportError: no module named 'extra'
- python - 使用 python configparser 读取 AWS 配置文件时遇到问题
- relationship - 如何标注图像中的对象以及对象之间的关系?
- javascript - 在 React 中以模态形式调用 GET 后重定向到另一个页面
- python - 如何使用 Mailgun API 向邮件列表的所有成员发送电子邮件
- powershell - 如何在 PowerShell 中打印上个月
- java - 使用数组添加、查看、更新和删除学生记录
- lightbox - AMP 灯箱默认打开