在HTML上使用findControl时出现NullReferenceException

时间:2015-02-22 06:37:16

标签: c# asp.net .net

单击按钮时,它会给出一个错误“System.NullReferenceException:对象引用未设置为对象的实例”

aspx代码

<body>
    <form id="form1" runat="server">
    <div id="choto">

    </div>
  <asp:Button ID="btn" runat="server" onclick="btn_Click" Text="Submit" />
</form>
</body>

JS代码

  <script type="text/javascript">

        document.getElementById("choto").innerHTML = "<input name=txt1 type=\"text\" id=\"txt1\" ru" + "nat=\"server\" />";
</script>

C#代码

 protected void btn_Click(object sender, EventArgs e)
        {
           // HtmlInputText txt = new HtmlInputText();
            HtmlInputText txt = (HtmlInputText)FindControl("txt1");
            txt.Value = "Shakeel";
        }

1 个答案:

答案 0 :(得分:1)

简单地说,id为“txt1”的输入不是ASP.NET控件,因此ASP.NET无法找到它。必须在服务器上定义ASP.NET控件,否则框架将不知道它们。

<body>
    <form id="form1" runat="server">
    <div id="choto">
        <asp:TextBox ID="txt1" runat="server" style="display:none;" />
    </div>
  <asp:Button ID="btn" runat="server" onclick="btn_Click" Text="Submit" />
</form>
</body>

无法通过JavaScript添加ASP.NET控件,但是,可以使用JavaScript将它们设置为不可见/可见。

<script type="text/javascript">
    document.getElementById('<%# txt1.ClientID %>').style.display = "block";
</script>