gpt4 book ai didi

c# - 用户控件内联代码中的调用函数并不总是有效

转载 作者:行者123 更新时间:2023-11-30 22:32:56 24 4
gpt4 key购买 nike

我用以下代码构造了一个 ASP.NET 用户控件“Box.ascx”。

<div id="divContent" runat="server" visible='<%# AllowedToView(this.Privacy) %>'>
Content
</div>

在代码隐藏中,“Box.ascx.cs”具有以下代码。

public string Privacy = string.Empty;
public bool AllowedToView(string privacy)
{
return true;
}

当我在中继器中使用此控件时,会触发 AllowedToView() 函数。如果我在没有中继器的情况下使用此控件,则不会调用 AllowedToView() 函数。我想知道为什么会发生这种奇怪的情况,以及在没有中继器的情况下如何让控件调用 AllowedToView() 函数。

详情如下。

我在“Default.aspx”中的中继器中使用此控件。

<asp:Repeater ID="rpRecords" runat="server">
<ItemTemplate>
<uc1:Box ID="myBox" runat="server" RecordID = '<%# Eval("RecordID") %>' />
</ItemTemplate>
</asp:Repeater>

转发器在“Default.aspx.cs”中使用以下代码进行数据绑定(bind):

DataTable dt = FillTable();
rpRecords.DataSource = dt;
rpRecords.DataBind();

我在“ShowBox.aspx”中使用“Box.ascx”控件,代码如下。

<body>
<uc1:Box ID="myBox" runat="server" />
</body>

我使用以下代码从代码隐藏中为用户控件赋值。

protected void Page_Load(object sender, EventArgs e)
{
myBox.RecordID = "1";
}

最佳答案

正如在另一个答案中提到的,# 意味着它将需要执行数据绑定(bind)。

因此,要回答您的问题“如何使其在中继器之外运行”,简单的答案是调用 myBox.DataBind()

您的问题与asp.net inline code <%# MyboolVal %> 非常相似.问题是 <%= 等于 Response.Write 并直接输出 HTML,因此在设置 visible 属性时它不起作用。

关于c# - 用户控件内联代码中的调用函数并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com