我有两个子布局:Grid-1-2和Grid-2-1.

这两个子布局共享一个ASCX文件(这不是一个好的sitecore实践,但我需要这样做)。
问题是,在ASCX代码背后,我想看看当前选择的网格是Grid-1-2还是Grid-2-1 ?!
我尝试过使用Datasource和RenderingId技术,但是没有效应。
编辑
我想知道是否可以从子布局的“数据”部分获得“参数”字段。这样就行了。

欢迎所有建议。救命啊!!
发布于 2015-12-03 07:38:50
你能试一下:
Sitecore.Context.Database.GetItem(((Sublayout)Parent).DataSource);还有其他选择是:
LayoutDefinition layoutDef = LayoutDefinition.Parse(Sitecore.Context.Item.Fields["__renderings"].Value);
string deviceId = Sitecore.Context.Device.ID.ToString();
DeviceDefinition curDeviceDef = layoutDef.GetDevice(deviceId);
RenderingDefinition renderingDef = curDeviceDef.GetRendering(Sitecore.Context.Database.Items["/sitecore/Layout/SubLayouts/MySublayout"].ID.ToString());
int controlIndex = curDeviceDef.GetIndex(renderingDef.UniqueId);
Control MyDotNetControl = Sitecore.Context.Page.Renderings[controlIndex].GetControl();发布于 2015-12-04 15:14:51
我们在基类上有以下方法,所有的子布局控件都是从.您只需在每个子布局上传入一个参数,以标识它并使用GetParameter方法检索它。例如name="Grid-1-2“等
public string GetParameter(string key, string defaultValue = null)
{
Sublayout s = this.SitecoreSublayout;
if (s != null)
{
if (!String.IsNullOrWhiteSpace(s.Parameters))
{
NameValueCollection pars = HttpUtility.ParseQueryString(s.Parameters);
if (pars != null)
{
return pars[key];
}
}
}
return defaultValue;
}
protected Sublayout SitecoreSublayout
{
get
{
Sublayout parent = this.Parent as Sublayout;
return parent;
}
}https://stackoverflow.com/questions/34060128
复制相似问题