.net 代码隐藏中的文字

.net 代码隐藏中的文字,.net,asp.net,literals,.net,Asp.net,Literals,为什么我无法访问asp.net页面的隐藏代码中的文字 <%@ Page Title="" Language="VB" MasterPageFile="~/UI/Masters/Window.master" AutoEventWireup="false" CodeFile="HelpViewer.aspx.vb" Inherits="UI_Pages_HelpViewer" culture="auto" meta:resourcekey="PageResource1" uiculture="

为什么我无法访问asp.net页面的隐藏代码中的文字

<%@ Page Title="" Language="VB" MasterPageFile="~/UI/Masters/Window.master" AutoEventWireup="false" CodeFile="HelpViewer.aspx.vb" Inherits="UI_Pages_HelpViewer" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" %>

<asp:Content ID="Content1" ContentPlaceHolderID="c" Runat="Server">
<%--<div dir="rtl">
    <asp:Panel ID="Panel1" Height="270px" Width="100%" ScrollBars="Auto" 
        runat="server" meta:resourcekey="Panel1Resource1">
       <asp:Literal ID="Literal1" runat="server" meta:resourceKey="Literal1Resource1"></asp:Literal>
 </asp:Panel>
</div>--%>

<div dir="rtl" align="right">
        <asp:Repeater ID="rptHelp" runat="server" DataSourceID="xmlHelp">
            <ItemTemplate>
                <div style ="font-size:12px; font-family :Tahoma; font-weight:bold; margin-left:5px; color:Green; ">
                      <asp:Literal ID="ltlTitle" runat="server" Text='<%#XPath("title")%>'></asp:Literal>
                </div>
                <div style="font-size:11px;margin-bottom:10px; margin-left:12px; margin-right:4px; font-family:Tahoma ; margin-top:9px;">
                    <asp:Literal ID="ltlText" runat="server" Text='<%#XPath("text")%>'></asp:Literal>
                </div>
            </ItemTemplate>
        </asp:Repeater>
        <asp:XmlDataSource ID="xmlHelp" runat="server"></asp:XmlDataSource>
    </div>
</asp:Content>


ltlText是隐藏代码中的未知元素。

ltlText直接未知,因为它位于一个包含控件中:中继器。如果您想访问它,您需要在中继器行上进行迭代,例如在和中,使用FindControl方法查找您的文本

查看MSDN文档中的示例代码:

您要查找的代码可能如下所示:

rptHelp_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {

        Literal lt = (Literal)e.Item.FindControl("ltlText");
        lt.Text = "Test";
    }
}

这是因为文字在转发器中。它的多个实例可能是使用您提供的模板创建的,因此仅按名称引用它是行不通的

使用类似于:

Literal ltlText = (Literal)rptHelp.Items[0].FindControl("ltlText");
// Do stuff with literal
很抱歉,现在还没有清醒到可以转换成VB语法的程度,但希望你能理解

您可能希望在中继器工作时执行代码,而不是像这样访问项目,例如在控件的事件处理程序中

更多示例事件处理程序的C#代码:

protected void rptHelp_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        // In this example, the repeater's data source is a DataTable,
        // so each item corresponds to a DataRow
        DataRow row = e.Item.DataItem as DataRow;
        Literal ltlText = (Literal)e.Item.FindControl("ltlText");
        // Set literal based on data here
    }
}

我在这个网站上的最大问题是我不能使用语法高亮:(。版主总是要编辑我的问题:(@shaahin,若要格式化代码,请选择您的代码段,然后按
Ctrl+K
,或者在每行的开头只留下4个空格。另外,请确保您阅读了此:@shaahin。只需阅读标记语法:。这很容易理解。您是如何尝试访问它的?问题很可能是因为您在一个中继器中。考虑使用FieldCuff.@ SpimION:通过在页面后面的代码中键入文字ID。