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

あなたは2つのことをすることができます

  1. データバインディング構文を使用して、代わりに SearchQuery パラメータが次のようになるようにします<f:param name="SearchQuery" value="<%# SearchTerm %>" />

  2. CodeBehind でパラメーターを渡します。通常はこれが最も簡単で、あらゆる種類の複雑なオブジェクトを渡すことができます

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

于 2013-03-05T10:58:00.743 に答える