0

我在 SharePoint 应用程序页面上有一个小表格:

 <form method="post" id="registration-form" action="default.aspx" class="form-general cf" data-querycompletion-url="ajax/searchinstant.aspx">
     <input type="text" id="name" name="name" placeholder = "Your name" runat="server" />
          <input type="text" id= "company" name="company" placeholder= "Your company" runat="server"/>
    <input type="text" id="srchtxtx" class="search" name="visitor" placeholder="visitor" runat="server" />
    <input name="btnConfirm" id="Submit1" class="right" value="register" type="submit" runat="server" /></form>

在 default.aspx 的代码隐藏处,我想以如下方式访问值:

string val1 = name.value;
string val2 = company.value;
string val3 = srchtxtx.value;

但上面分别在 val1、val2 和 val3 中返回空字符串。但是如果我runat = "server"<input>标签中删除,那么我可以成功地访问值:

string val1 = Request.Form["name"];
string val2 = Request.Form["company"];
string val3 = Request.Form["visitor"];

问题是为什么当我runat = "server"<input>标签中使用时它返回空字符串值?由于某些原因,我无法runat = "server"<input>标签中删除。

<input>在假设 runat = "server" 属性的同时,还有其他方法可以访问代码隐藏中的值<input>吗?

我也被限制不使用<asp:TextBox>控制。

4

1 回答 1

1

正如我在以空值提交的 html 表单中所暗示的那样,这是因为表单没有runat="server",因此 asp.net 不处理回发数据,即未填充 srchtxtx 等的属性。

然而 html 元素仍然在页面上被赋予唯一的 id,所以你不能只是这样做Request.Form["srchtxtx"];

为了解决这个问题,您可以使用输入元素的UniqueID来获取回发的值:

HTML

<form method="post" id="registration-form" action="default.aspx" class="form-general cf" data-querycompletion-url="ajax/searchinstant.aspx">
    <input type="text" id="srchtxtx" name="srchtxtx" runat="server" />
    <input name="btnConfirm" id="Submit1" class="right" value="register" type="submit" runat="server" />
</form>

C#

protected void Page_Load(object sender, EventArgs e)
{
    string val1 = srchtxtx.Value; // always ""
    string val2 = Request.Form["srchtxtx"]; // always null
    string val3 = Request.Form[srchtxtx.UniqueID]; // input value
}
于 2013-01-13T13:53:49.977 回答