【问题标题】:I cant access <asp:textbox> value in code behind file我无法在文件后面的代码中访问 <asp:textbox> 值
【发布时间】:2017-02-27 20:03:46
【问题描述】:

早安

我有一个带有按钮板的网页。它在网络不好的加油站使用,所以每次他们点击按钮向文本框添加一个数字时,它将永远加载,所以我将按钮点击更改为 javascript。

它工作得很好,但现在当我从文本框中检索值时,后面的代码得到一个空值(非空)。

这是我的代码

用于将数字添加到文本框的按钮 和文本框

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="OVKWEBAPP.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <title></title>

    <link  rel="stylesheet" type="text/css" href="mainstyle.css" />
    <style type="text/css">
    .modal
    {
        position: fixed;
        top: 0;
        left: 0;
        /*background-color: black;*/
        z-index: 99;
        opacity: 0.8;
        filter: alpha(opacity=80);
        -moz-opacity: 0.8;
        min-height: 100%;
        width: 100%;
    }
    .loading
    {

        font-family: Arial;
        font-size: 10pt;
        border: 5px solid #67CFF5;
        width: 200px;
        height: 100px;
        display: none;
        position: fixed;
        background-color: White;
        z-index: 999;
    }
</style>

</head>
<body>
     <form id="form1" runat="server">
        <asp:TextBox ID="txtRknr" runat="server" CssClass="txtBoxRknr" PlaceHolder="Rekening Nommer" Enabled="False" autocomplete="off" Width="175px"></asp:TextBox>
        <input type="button" id="btnPad1" runat="server" value="1" class="buttonsb" onclick="input(this);"/>
        <input type="button" id="btnPad2" runat="server" value="2" class="buttonsb" onclick="input(this);"/>
        <asp:Button ID="btnMsg1" runat="server" Text="Gaan Voort" CssClass="buttonsa" OnClick="btnMsg1_Click" />
    </form>
</body> 

<script type="text/javascript">     
function input(e) {
        document.getElementById("<%=txtRknr.ClientID %>").value = document.getElementById("<%=txtRknr.ClientID %>").value + e.value;
    }
    </script>
</html>

这是我在代码隐藏文件中的代码

        protected void btnMsg1_Click(object sender, EventArgs e)
        {
            lblError.Text = "";
            //string user = txtRknr.Text;
            string user = ((TextBox)FindControl("txtRknr")).Text;
            if(user == "")
            //if (txtRknr.Text == "")
            {
                lblError.Text = "ONGELDIGE REKENING NOMMER";
                return;
            }
}

基本上,所有这些需要做的就是从网站上的按钮板上将帐号添加到文本框中。

添加帐户后,他们将单击继续按钮,然后后面的代码检查文本框是否为空,如果不为空,则连接到数据库以检查它是否有效。

但是无论我在文本框中添加多少数字,当我从后面的代码访问它时,它仍然是空的。

【问题讨论】:

  • 您为什么使用 FindControl?控件在页面内,它看起来不像在另一个控件内
  • 您已禁用文本框:Enabled="False"

标签: javascript c# html asp.net


【解决方案1】:

试试这个。

Request.Form["by-name-attribute"];

【讨论】:

  • OP 想要在后面的代码中访问表单发布的值,我没有注意到 Enable="false" 属性。所以建议这个答案很适合访问代码隐藏文件中的表单值
【解决方案2】:

Enabled="False" 表示您的输入字段将具有disabled 属性。禁用的表单元素不会在 HTML 表单中发布,这意味着当您从代码隐藏访问它时,它会使用文本框的默认值。

如果您不希望手动编辑该字段,请尝试使用 ReadOnly="True" 而不是 Enabled="False"

编辑

我猜想 ASP.NET 会阻止您从 ReadOnly=True 文本框中读取值,以阻止您执行您正在尝试执行的操作。一个&lt;asp:HiddenField&gt; 创建一个&lt;input type="hidden"&gt;,您应该能够写入值并将其正确发布到代码隐藏。

【讨论】:

  • 如果 OP 真的对人们弄乱 HTML 感到偏执,他还可以将 TextBox 更改为 Label。
  • 乔伊诺斯。我删除了 Enabled="false" 并添加了 ReadOnly="True"
  • 我仍然有同样的问题。但是当我删除只读并启用它时,它起作用了。但是该网站是在表格上使用的,所以我需要类似只读的内容,以便在选择文本框时不会弹出表格键盘谢谢您到目前为止的帮助
  • 对,我忘了 - 我认为 WebForms 有一个安全功能,其中 ReadOnly 文本框不会在代码隐藏中显示值,因为从它的角度来看,因为它是只读的,所以你不应该能够修改它,即使它是以这种方式发布的。您可能可以使用Request.Form 集合来获取它,但您最好的选择可能是隐藏字段&lt;asp:HiddenField&gt;,它将创建一个&lt;input type="hidden"&gt;,并且应该能够通过javascript 进行编辑并正确发布。如果您仍然需要视觉表示,只需同时执行文本框和隐藏字段即可。
【解决方案3】:

排队

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="OVKWEBAPP.WebForm1" %>

Inherits="OVKWEBAPP.WebForm1" 替换为Inherits="OVKWEBAPP.default"

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    相关资源
    最近更新 更多