2012-03-08 89 views
1

我有一個ASP.NET C#網站,我試圖從單擊按鈕時在頁面中的HTML中檢索內部html。當它沒有runat =「server」屬性時找到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"); 

回答

1

的FindControl只能找到已RUNAT控制=」服務器「的屬性,好消息是你可以很容易地改變你的div到面板上,並以這種方式添加數據。

壞消息是,這仍然不會讓你訪問div的innerhtml,.net將其視爲其他控件的容器。

做到這將是某種形式的AJAX的,因爲你的客戶端腳本將能夠讀取內容並把它傳遞到服務器端方法

+0

謝謝,你能提供一個面板方式的例子嗎?它是 ... 2012-03-08 00:41:53

+0

看到我對這個問題的回答:http://stackoverflow.com/questions/9611062/how-to-update-votes-client-side-using-webforms/9611282#9611282 – Evert 2012-03-08 00:48:52

1

您將無法使用的FindControl的最佳方式對於沒有用runat =「server」標記的東西。這是因爲任何沒有用runat =「server」標記的元素都會在運行時被解析爲一個巨大的文本文字。不過,您可以將runat =「server」添加到任意的html元素。