0

在 Composite C1 中,如何将参数传递给在 Webforms 用户控件中呈现的 C1 函数?

就我而言,我想在我的用户控件中包含 SimpleSearch 结果:

<rendering:Function runat="server" id="fnSimpleSearch" >
    <f:function xmlns:f="http://www.composite.net/ns/function/1.0" name="Composite.Search.SimplePageSearch.SearchResults">      
        <f:param name="SearchQuery" value="<%= SearchTerm %>" /> 
        <f:param name="CurrentSite" value="False" /> 
        <f:param name="PageSize" value="10" /> 
        <f:param name="ShowSearchForm" value="True" />      
    </f:function> 
</rendering:Function>

这是代码隐藏:

public string SearchTerm { get; set; }

protected override void OnLoad(EventArgs e)
{
    C1PageRoute.RegisterPathInfoUsage();
    string pathInfo = C1PageRoute.GetPathInfo();
    if(!string.IsNullOrWhiteSpace(pathInfo))
    {
        SearchTerm = pathInfo.Substring(1);
    }

    base.OnLoad(e);
}

如果我这样做,函数将不会在最终页面中呈现,而只会呈现标记。如果我为 SearchQuery 参数输入一个静态值,它会被渲染。

如何从我的 CodeBehind 传递 SearchQuery 参数,以便正确呈现函数?

4

1 回答 1

1

你可以做两件事

  1. 使用数据绑定语法,因此 SearchQuery 参数看起来像这样<f:param name="SearchQuery" value="<%# SearchTerm %>" />

  2. 在 CodeBehind 中传递参数。这通常是最简单的,使您能够传递各种复杂的对象

    fnSimpleSearch.Parameters.Add(new Param("SearchQuery", SearchTerm));

于 2013-03-05T10:58:00.743 回答