如何在Sitecore子布局中渲染参数模板中某些字段的内容并使其可编辑页面?

时间:2013-05-09 11:52:28

标签: sitecore sitecore6

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

2 个答案:

答案 0 :(得分: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文件上执行代码。

虽然显然这不允许你在页面编辑器中编辑它。

This是一篇很好的文章,可以阅读本文

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

我有一个帮助类:

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));
}

答案 1 :(得分:2)

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

Dynamic content editor templates using Rendering Dependencies

然后,您可以按正常情况使用sc:textsc:fieldrenderer