1

我有一个希望能够在多个页面上使用的子布局。我需要在子布局的顶部显示一个标题栏,并且我创建了一个包含标题字段的参数模板。我想在一个sc:Textsc:FieldRenderer控件中显示这个标题,以便能够页面编辑这个值。我该怎么做呢?

4

2 回答 2

4

在 ascx 上,您可以拥有<%= Title %>

在代码隐藏中,您可以像这样声明它:

public string Title { get; set; } 

在 Page_Load 中:

string rawParameters = Attributes["sc_parameters"];
NameValueCollection parameters = Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);
Title = parameters["Title"];

当然,假设您是在 ascx 文件上编写代码。

尽管显然这不允许您在页面编辑器中对其进行编辑。

是一篇很好的文章

[编辑]
想我会添加我自己使用的代码:

我有一个助手类,它可以:

public ParamHelper(System.Web.UI.UserControl control)
{
    _sublayout = control.Parent as Sitecore.Web.UI.WebControls.Sublayout;

    if (_sublayout != null)
    {
        _params = Sitecore.Web.WebUtil.ParseUrlParameters(_sublayout.Parameters);
    }
}

然后我可以得到我的参数:

public string GetParam( string key )
{
    string result = _params[key.Trim().ToLower()];

    if (string.IsNullOrEmpty(result))
    {
        result = string.Empty;
    }

    return (System.Web.HttpUtility.UrlDecode(result));
}
于 2013-05-09T12:05:46.263 回答
2

为什么它需要作为子布局参数,为什么不只是模板中的普通字段?您可以使用模板继承仅将字段添加到将使用子布局的那些模板,或者如果它会被大量使用(或跨站点上的随机页面),然后将其添加到基本模板。如果项目上未使用子布局,您可以通过添加依赖项来隐藏内容编辑器中的字段:

使用渲染依赖项的动态内容编辑器模板

然后,您可以使用sc:textsc:fieldrenderer照常使用。

于 2013-05-09T14:02:55.270 回答