【问题标题】:Pass variable to UserControl将变量传递给 UserControl
【发布时间】:2010-12-08 14:57:06
【问题描述】:

我尝试将 Package 变量传递给我的 UserControl:

<uc:Template ID="Template" runat="server" Package="<%=TemplateParams.SimpleSearch %>" />

但没有运气 - 在 UC 中,它给了我 &lt;%=TemplateParams.SimpleSearch %&gt; 字符串,而不是来自 TemplateParams 类的 SimpleSearch 参数。

如何做到这一点?

编辑:

关于我知道的代码背后的方式 - 我想知道如何从视图中做到这一点。

【问题讨论】:

    标签: c# asp.net parameter-passing


    【解决方案1】:

    在包含您尝试公开的属性的用户控件中,您可以设置BrowsableAttribute 属性:

    [BrowsableAttribute(true)]
    public string myProperty { get; set; }
    

    这应该在控件的 xml 版本中公开它。

    编辑
    如果您的 TemplateParams.SimpleSearch 是一个字符串,那么您应该能够执行以下操作:

    Package='<%=TemplateParams.SimpleSearch%>'
    

    ' 在这里与众不同。如果它是一个对象,则必须在后面的代码中进行。

    【讨论】:

    • 它没有解决问题 - 仍然 Package 包含 &lt;%=TemplateParams.SimpleSearch %&gt; 字符串。
    【解决方案2】:

    您可以从后面的代码中传递变量或设置属性

    Template.variable="foo";
    

    【讨论】:

      【解决方案3】:
      Page.FindControl("Template").Attributes.Add("Package", "YourValueGoesHere");
      

      【讨论】:

        【解决方案4】:

        如果您真的想在标记中这样做,另一种选择是使用expression builder

        我们将this one 用于许多类似的任务

        这将允许您编写类似的代码

        <uc:Template ID="Template" runat="server" Package="<%$ Code : TemplateParams.SimpleSearch %>" />
        

        【讨论】:

          猜你喜欢
          • 2021-01-16
          • 1970-01-01
          • 2020-01-24
          • 2021-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-13
          • 2014-09-05
          相关资源
          最近更新 更多