首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.ascx文件共享时获取Sublayout项

.ascx文件共享时获取Sublayout项
EN

Stack Overflow用户
提问于 2015-12-03 07:29:23
回答 2查看 524关注 0票数 0

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

这两个子布局共享一个ASCX文件(这不是一个好的sitecore实践,但我需要这样做)。

问题是,在ASCX代码背后,我想看看当前选择的网格是Grid-1-2还是Grid-2-1 ?!

我尝试过使用DatasourceRenderingId技术,但是没有效应。

编辑

我想知道是否可以从子布局的“数据”部分获得“参数”字段。这样就行了。

欢迎所有建议。救命啊!!

EN

回答 2

Stack Overflow用户

发布于 2015-12-03 07:38:50

你能试一下:

代码语言:javascript
复制
Sitecore.Context.Database.GetItem(((Sublayout)Parent).DataSource);

还有其他选择是:

代码语言:javascript
复制
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();
票数 0
EN

Stack Overflow用户

发布于 2015-12-04 15:14:51

我们在基类上有以下方法,所有的子布局控件都是从.您只需在每个子布局上传入一个参数,以标识它并使用GetParameter方法检索它。例如name="Grid-1-2“等

代码语言:javascript
复制
    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;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34060128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档