我有一个希望能够在多个页面上使用的子布局。我需要在子布局的顶部显示一个标题栏,并且我创建了一个包含标题字段的参数模板。我想在一个sc:Text
或sc:FieldRenderer
控件中显示这个标题,以便能够页面编辑这个值。我该怎么做呢?
问问题
1640 次
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:text
或sc:fieldrenderer
照常使用。
于 2013-05-09T14:02:55.270 回答