C# ASP.NET如何读取HTML表单元素?
我有一个ASP.NET web表单,其中有一个隐藏字段,如下所示:C# ASP.NET如何读取HTML表单元素?,c#,asp.net,html,C#,Asp.net,Html,我有一个ASP.NET web表单,其中有一个隐藏字段,如下所示: <form id="form1" runat="server" action="http://localhost/fa/Default.aspx"> <div> <input id="requestData" type="hidden" name="requestData" value="" runat="server" /> <asp:Button ID
<form id="form1" runat="server" action="http://localhost/fa/Default.aspx">
<div>
<input id="requestData" type="hidden" name="requestData" value="" runat="server" />
<asp:Button ID="btnPOST" Text="POST" runat="server" OnClick="do_POST" />
</div>
</form>
当我提交表单(按下按钮)时,它会转到服务器(处理程序),如果我有:
protected void do_POST(object sender, EventArgs e)
{
//requestDataField is of the type protected global::System.Web.UI.HtmlControls.HtmlInputHidden requestData;
requestDataField.Text = "FOO!";
}
string requestData = context.Request.Form["requestData"];
我得到一个空字符串
但如果我指定这样的值:
<input id="requestData" type="hidden" name="requestData" value="FOO" runat="server" />
我得到了“福”
我缺少什么?您的do\u POST方法在服务器上运行,而不是在客户机上运行,设置表示
控件的服务器端对象的值也是如此。您的context.Request.Form[“requestData”]
从POST请求中提交的客户端数据中获取字段的值,该值从未设置,因此为空
如果您想让onClick
成为客户端函数,那么您需要稍微改变一下。使用OnClientClick
属性(而不是onClick
)。然后创建一个javascript方法来设置字段值:
<asp:Button ID="btnPOST" Text="POST" runat="server" OnClientClick="do_POST" />
<script>
function do_POST() {
document.getElementById("requestData").value = "FOO!";
}
</script>
函数do_POST(){
document.getElementById(“requestData”).value=“FOO!”;
}
我尝试了您的代码,但没有做什么更改
requestDataField.Text=“FOO!”
torequestData.Value=“FOO”代码>
它之所以不这样做,是因为该方法是在页面被发回后调用的。也就是说,如果您将.Text更改为.Value,它实际上是有效的。不幸的是,此时您已经阅读了表单,并且它是一个空值。我记得曾经在一个项目中工作过,在这个项目中,您可以告诉表单在函数运行之前不要提交(但它使用的javascript需要在提交aspx之前运行一个完整的表单)。在进行回发之前,您应该尝试看看是否有办法强制表单运行函数。不使用JS怎么办?将值放入隐藏输入字段的唯一方法是使用javascript,或者在创建页面时将其放置在服务器端。如果我将其传递到另一个字段(隐藏输入除外),该怎么办?我可以使用另一个来传递表单中的数据吗?当然,您可以使用隐藏或非隐藏的数据输入。你想做什么?我想做的是在元素中以这种形式传递一些文本。当我按下按钮(btnPOST)时,会生成该文本。我只想在服务器端读一下。现在我正在使用:on_POST按钮函数执行以下操作:data.Value=“FOO!”;在服务器处理程序(表单操作)中,我执行以下操作:stringrequestdata=request.form[“data”];我仍然得到一个空字符串。我遗漏了什么?“requestDataField.Text=“FOO!“;”应该是“requestDataField.Value=”FOO!“;”然而,我只想动态填充一些html元素或控件,并在服务器端读取。