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