gpt4 book ai didi

asp.net - 在 ASP.NET 中使用嵌入式标准 HTML 表单

转载 作者:太空狗 更新时间:2023-10-29 13:05:01 26 4
gpt4 key购买 nike

我有一个标准的 aspx 页面,我需要在其中添加另一个标准的 HTML 表单并将其提交到另一个位置(外部站点),但是每当我按下提交按钮时,该页面似乎都会回发而不是使用子表单操作 url。

下面是表单关系的模型。请注意,在实际部署中,表单将成为母版页布局内容区域的一部分,因此该表单需要独立于母版页表单提交。

    <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<form id="subscribe_form" method="post" action="https://someothersite.com" name="em_subscribe_form" >
<input type="text" id="field1" name="field1" />
<input id="submitsubform" type="submit" value="Submit" />
</form>
</div>
</form>
</body>
</html>

最佳答案

这是一个有趣的问题。理想情况下,您只需要页面上的 1 表单标签,就像其他用户提到的那样。可能您可以通过 javascript 发布数据而无需 2 个表单标签。

示例取自 here ,根据您的需要进行修改。不能 100% 确定这是否适合您,但我认为这就是您必须采用的方法。

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">

function postdata()
{
var fieldValue = document.getElementById("field1").value;
postwith("http://someothersite.com",{field1:fieldValue});
}

function postwith (to,p) {
var myForm = document.createElement("form");
myForm.method="post" ;
myForm.action = to ;
for (var k in p) {
var myInput = document.createElement("input") ;
myInput.setAttribute("name", k) ;
myInput.setAttribute("value", p[k]);
myForm.appendChild(myInput) ;
}
document.body.appendChild(myForm) ;
myForm.submit() ;
document.body.removeChild(myForm) ;
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<input type="text" id="field1" name="field1" />
<asp:Button ID="btnSubmitSubscribe" runat="server" Text="Submit" OnClientClick="postdata(); return false;" />

</div>

</div>
</form>
</body>
</html>

如果 javascript 不是一个可行的选项 - 您可以使用 .Net 的 HttpWebRequest 对象在代码隐藏中创建 post 调用。在后面的代码中看起来像这样(假设您的文本字段是一个 asp 文本框:

private void OnSubscribeClick(object sender, System.EventArgs e)
{
string field1 = Field1.Text;


ASCIIEncoding encoding=new ASCIIEncoding();
string postData="field1="+field1 ;
byte[] data = encoding.GetBytes(postData);

// Prepare web request...
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://someotherwebsite/");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
}

关于asp.net - 在 ASP.NET 中使用嵌入式标准 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588981/

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