【问题标题】:Form Field Null in ASP.net Code Behind Despite Runat=Server尽管 Runat=Server,ASP.net 代码中的表单字段为空
【发布时间】:2016-06-01 17:07:05
【问题描述】:

这是 ASPX 页面上的 HTML 表单域。

注意应该让我在代码隐藏中访问它的“runat=server”标签。

<div class="col-xs-12 col-sm-6 col-md-6">
    <div class="form-group">
        <input type="text" name="Address1" id="Address1" runat="server" class="form-control input-lg address" placeholder="Full Address" maxlength="50" tabindex="2" >
    </div>
</div>

这是 C# 代码隐藏的 sn-p。

string test = Address1.Value;

但字符串测试失败,因为 Address1.Value 为空。

我完全按照我找到的here 进行操作,但它始终为空。我已经搜索了高低,但我找到的所有东西 suggests the same thing 由于某种原因不起作用。你能帮帮我吗?

【问题讨论】:

  • 您是否在 Page_Load 事件或 PostBack 期间看到此行为?

标签: c# html asp.net


【解决方案1】:

确保它到达服务器

您是否正在做任何会触发实际PostBack 的事情,该PostBack 会将您元素中的值发送到服务器?在实际的 &lt;form&gt; 元素发布之前,.NET 根本不会知道您的元素有值,这将填充适当的值。

如果您要添加一个提交表单的按钮,那么您的值应该在PostBack 出现之后出现:

结案

另一方面,您需要确保您的&lt;input&gt; 标记按预期以/&gt; 正确关闭,以避免任何可能的问题,因为它没有按预期发布:

<input type="text" name="Address1" id="Address1" runat="server" class="form-control input-lg address" placeholder="Full Address" maxlength="50" tabindex="2" />

示例

你可以see a complete example Gist reproducing this here

【讨论】:

  • 我不知道这需要回发。这就是它不起作用的原因。我需要一种无需回发即可获取数据的方法,因为它是一个单页应用程序,并且回发会重新加载整个内容,将用户推回到开头。我一直在用 AJAX 发送数据;我应该在表单的其他部分发送的 JSON 中的表单字段吗?
【解决方案2】:

尝试在输入标签中添加 value 属性。

<div class="col-xs-12 col-sm-6 col-md-6">
    <div class="form-group">
        <input type="text" name="Address1" id="Address1" runat="server" class="form-control input-lg address" placeholder="Full Address" maxlength="50" tabindex="2" value="" >
    </div>
</div>

【讨论】:

  • 虽然这可能是一个有价值的建议,但在这种情况下,提供示例代码来说明通过向输入标签添加 value 属性的含义可能更有价值。
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多