在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>
这是CodeBehind:
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参数,以便正确呈现函数?
答案 0 :(得分:1)
你可以做两件事
使用数据绑定语法,以便SearchQuery参数显示为<f:param name="SearchQuery" value="<%# SearchTerm %>" />
在CodeBehind中传递参数。这通常是最简单的,使您能够传递各种复杂的对象
fnSimpleSearch.Parameters.Add(new Param(“SearchQuery”,SearchTerm));