如果没有runat =“server”属性,请找到HTML元素

时间:2012-03-08 00:36:38

标签: c# asp.net

我有一个ASP.NET C#网站,当我点击一个按钮时,我试图从我页面的HTML中检索内部html。

我的问题:我使用函数FindControl()但它应该找到元素时返回null。为什么会发生这种情况,我做错了什么?

我的HTML页面:

<%@ Page Title="test" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="test.aspx.cs" Inherits="test" %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="ActualContent">
    <div class="regMainContainer mainContainer container">
            <!-- Attempting to get the below div -->
            <!-- Knowtice it does not have runat="server", 
                 I would prefer not to do that if I dont need to -->
            <div id="courseDiv" class="courseContainer">
            </div>
    </div>
</asp:content>

单击按钮时执行的代码(在test.aspx.cs文件中:

HtmlGenericControl d = (HtmlGenericControl)FindControl("courseDiv");

2 个答案:

答案 0 :(得分:1)

FindControl只能找到具有runat =“server”属性的控件。好消息是,您可以轻松地将div更改为面板,并以这种方式添加数据。

坏消息是,这仍然不允许您访问div的innerhtml,。net将其视为其他控件的容器。

执行此操作的最佳方法是某种形式的ajax,因为您的客户端脚本将能够读取该内容并将其传递给服务器端方法

答案 1 :(得分:1)

对于未标记为runat =“server”的内容,您将无法使用FindControl。这是因为任何未标记为runat =“server”的元素在运行时都会被解析为一个巨大的文本文字。但是,您可以将runat =“server”添加到任何任意html元素中。