【发布时间】:2014-11-11 06:06:57
【问题描述】:
我正在尝试将通过 kentico cms 中的转换检索到的自定义表字段的值传递给自定义用户控件。
为了解释我的设置,在我的主文件中,我有一个 QueryUniView 控件,它调用转换“SelectedStoreInformation”。在这个转换中,我有标记,我可以使用以下方法打印出我正在寻找的字段:
<%# Eval("StoreCodeName") %>
但是,我需要将此值传递给自定义用户控件,并希望能够检查后面代码中的值。所以我继续在后面的代码中添加一个属性,并在服务器标签本身上设置这个属性,假设该值会通过。
自定义控件代码后面的属性:
public string StoreName { get; set; }
服务器标签包括(这是在转换中拉入自定义控件):
<cms:Hours ID="Hours" StoreName='<%# Eval("StoreCodeName") %>' runat="server" />
但是 StoreName 在后面的代码中为空。如果我将标签上 StoreName 的值更改为静态文本字符串,它就可以正常工作。
我的困惑是为什么当我将字段的 Eval 放在服务器标签正上方但在服务器标签中不起作用时,它会起作用?
感谢您的帮助,抱歉问题太长了。
Kentico v6
【问题讨论】:
-
我的类后面的控制代码继承自 CMSAbstractWebPart
-
这并不是说 Eval 在 server 标签中不起作用 - 它可能只是稍后才评估。检查您是否过早访问该物业。我建议在 OnDataBinding 或 OnPreRender 中使用它的值。
-
@rocky 做到了!非常感谢。我觉得我已经为此苦恼了好几天。
-
没问题,很高兴为您提供帮助;)
标签: c# asp.net webforms user-controls kentico