<%= %>之前的ASP.NET自定义控件渲染 执行代码以填充属性
我有一个公开属性的自定义控件。 当我使用固定值设置它时,一切正常。 但是如果我尝试使用 <%= %> 设置它的值 标签,它有点古怪:
<cc:CustomControl ID="CustomControl" runat="server" Property1='<%= MyProperty %>' />
<%= MyProperty %>
当它被渲染时, <%= MyProperty %> 自定义控件下方的标记按我的预期呈现(具有 MyProperty 的值)。 但是,当我进入 CustomControl 的 Render 函数时,Property1 的值实际上是字符串“<%= MyProperty %>” 而不是 MyProperty 的实际基础价值。
I have a custom control that exposes a property. When I set it using a fixed value, everything works correctly. But if I try to set its value using the <%= %> tags, it goes a little whacky:
<cc:CustomControl ID="CustomControl" runat="server" Property1='<%= MyProperty %>' />
<%= MyProperty %>
When this gets rendered, the <%= MyProperty %> tag underneat the custom control is rendered as I expect (with the value of MyProperty). However, when I step into the Render function of the CustomControl, the value for Property1 is literally the string "<%= MyProperty %>" instead of the actual underlying value of MyProperty.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的控件是在
OnInit
期间从标记初始化的。 因此,如果该语法有效,它无论如何都不会达到您想要的效果,因为MyProperty
将在OnInit
期间评估,而不是在渲染时评估(就像第二个那样)用法)。您想改用数据绑定语法:
只需确保在容器(Page、UserControl 等)上调用
DataBind()
即可。或者,您可以在后面的代码中设置该属性:
You control is initialized from the markup during
OnInit
. So if that syntax worked, it wouldn't have the effect you wanted anyway, sinceMyProperty
would be evaluated duringOnInit
and not at render time (like it is with the second usage).You want to use the data binding syntax instead:
Just make sure to call
DataBind()
on the container (Page, UserControl, etc).Alternatively, you can set the property in your code behind:
尝试 <%# MyProperty %> 在 CustomControl 中,看看是否有效。
Try <%# MyProperty %> in the CustomControl and see if that works.