javascript - JS 脚本表单帖子未显示为 ASP.NET Request.Form
问题描述
我有几个用户控件,其中一个需要单击才能转到不同的页面。我有一个被调用的javascript函数,里面有警报,我知道它发布了正确的数据。此 Javascript 调用也与其他网站一起使用并且工作正常,但它们不处理用户控件。用户控件调用 ShowNotes,但发布到带有 site.master 页面的普通表单页面。我想我错过了一些简单的东西,所以请善待并让我知道我错过了什么。
function ShowNotes(appName, serverName, appDataID) {
var params = [];
params.push({
AppName: appName,
ServerName: serverName,
AppDataID: appDataID
});
formPost("/Notes.aspx", params);
}
function formPost(url, params) {
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("name", "hiddenForm");
form.setAttribute("action", url);
var hiddenField;
for (var key in params) {
for (var val in params[key]) {
hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", val);
hiddenField.setAttribute("value", params[key][val]);
form.appendChild(hiddenField);
//alert(val + ": " + params[key][val]);
}
}
document.body.appendChild(form);
form.submit();
}
然后在 Notes.aspx 方面,我调试并显示 Request.Form.Count = 0。我可能缺少什么?我还查看了 request.QueryString ,它是空的。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Form.Count > 0)
{
编辑:
根据 VDWWD 评论,我修改了检查表单是否存在并使用该表单的方法。我仍然得到相同的结果。
function formPost(url, params) {
var form = document.forms[0];
if (form == undefined) {
form = document.createElement("form");
form.setAttribute("name", "hiddenForm");
form.setAttribute("id", "hiddenForm");
}
alert(form.id);
form.setAttribute("method", "post");
form.setAttribute("action", url);
var hiddenField;
for (var key in params) {
for (var val in params[key]) {
hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", val);
hiddenField.setAttribute("value", params[key][val]);
form.appendChild(hiddenField);
//alert(val + ": " + params[key][val]);
}
}
document.body.appendChild(form);
form.submit();
}
解决方案
在我发表评论后,我从您的编辑中测试了以下简化片段。
<script type="text/javascript">
function formPost(url, params) {
var form = document.forms[0];
form.setAttribute("method", "post");
form.setAttribute("action", '/default.aspx');
hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", 'FormPostTest');
hiddenField.setAttribute("value", "TheValueOfTheHiddenField");
form.appendChild(hiddenField);
form.submit();
}
</script>
然后Default.aspx
我用这个检索值,Request.Form["FormPostTest"]
它工作得很好。即使帖子页面与表单所在的页面不同。
您确定要发布到正确的页面并使用正确的name
?
推荐阅读
- python - 使用while 1而不输入任何命令时如何在pyserial python中终止ser.read?
- json - 使用 Play json 解析具有不同模式的 json
- ruby-on-rails - Solidus Paypal Braintree 集成不起作用?
- javascript - 如何在 VisJS 中创建自定义节点
- python - 深度图显示一切都是灰色的!OpenCV-Python
- python - Matplotlib:双轴图表没有按方面工作
- javascript - 在表中添加动态行,但它正在清空行中的数据
- sql - Oracle 到 T-SQL 的转换。我怎样才能使这项工作?
- dart - 从 Cloud Firestore 查询生成颤振列表
- tensorflow - TensorFlow - 如何导入具有多个标签的数据