【问题标题】:Passing <%=value%> in user control (.ascx)在用户控件 (.ascx) 中传递 <%=value%>
【发布时间】:2018-02-19 10:15:09
【问题描述】:

这是.aspx中的ascx控件

<Menu:MNU ID="PMPHeaderMenu" runat="server" HiLiter="<%=h%>"></Menu:MNU>

在 aspx.cs 我有

  public int h = 1;
  ....
  ....
  h = 5;

在 ascx.cs 我有 HiLiter 属性

   public string HiLiter { get; set; }

当我调试时,我得到 HiLiter 的 值,而我预计它是 5。

如何将服务器端设置值传递给用户控件?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您不能将&lt;%=%&gt; 用于控件,而runat="server" 用于设置属性,&lt;%=%&gt; 类似于 Response.Write。

&lt;%# %&gt;(数据绑定表达式)可用于填充控件属性,但控件应位于数据绑定容器内,如GridView、DetailsView、FormView 和Repeater。

在您的情况下,您应该从 (aspx.cs) 页面后面的代码中设置属性的值,如下所示。

 PMPHeaderMenu.HiLiter = h;
 this.DataBind();

【讨论】:

  • @venkat 不确定你为什么添加 this.DataBind();
  • 控件不需要像你提到的GridView,DetailsView这样的数据绑定容器中。使用 this.DataBind() 可以达到目的。
  • 如果通过后面的代码赋值属性就不需要写 this.DataBind();而且它也没有必要成为一个容器。问题仅在于数据绑定表达式
  • 我必须在后面的代码中使用 this.DataBind() 否则它不起作用。我不知道为什么。
  • 令人惊讶,我试过了,它对我有用:)
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多