C# 将参数传递给用户控件中的XSLT函数

C# 将参数传递给用户控件中的XSLT函数,c#,asp.net,.net,user-controls,c1-cms,C#,Asp.net,.net,User Controls,C1 Cms,在复合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.SearchRes

在复合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>
如果我这样做,函数将不会在最终页面中呈现,而只是呈现标记。如果我为SearchQuery参数输入了一个静态值,则会呈现它

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

您可以做两件事

  • 使用数据绑定语法,使SearchQuery参数看起来像这样

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

    添加(新参数(“SearchQuery”,SearchTerm))


  • 我已经尝试了数据绑定语法,结果相同。将尝试Codebehind版本。
    fnSimpleSearch
    没有
    参数
    属性。它的类型是
    CompositeC1Contrib.Web.UI.Rendering.Function
    。我运行的是这个库的旧版本还是正在发生什么?我看到的唯一公共属性是
    Content
    。如果运行旧版本的库,我无法回答您的问题,但可以肯定的是,Function类确实有一个参数属性,它似乎是另一个
    Function
    类,而不是我正在使用的(名称空间是
    CompositeC1Contrib.Web.UI.F
    ,我的名称空间是
    CompositeC1Contrib.Web.UI.Rendering
    )。我是否使用了错误的语法将函数添加到用户控件aspx中?它是从2011-11-25()开始的,因此如果您使用的版本比它旧,我认为是升级的时候了。
    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);
    }