重复子布局 - 如何使其独特 - 满足ADA要求

时间:2017-12-08 18:11:10

标签: asp.net sitecore7.2

我有一个加载了两次的搜索框 - 一次用于桌面,一次用于移动。

设备确定显示的内容。但是,由于ADA,标签需要是独一无二的。

有没有办法调用子布局并为每个要使用的html元素生成唯一标记?

或者,是否有办法在子布局中生成标记以确保标记是唯一的。

<div id="desktop">
<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" />
</div>
<div id="mobile-search" class="hidden">
<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" />
</div>

-----------布局

<div class="searchtool">
<img src="/includes/images/search.png" alt="Search" style="float:left"/>
<div style="float:left">
<fieldset class="search"  aria-labelledby="Name">

alt aria-labelledby标记必须是唯一的。

由于

2 个答案:

答案 0 :(得分:0)

只是一个想法,将设备作为参数传递并制作标签,例如&#34;搜索桌面&#34;或&#34;搜索 - 移动&#34;。

详情请见此处 - http://imjo.hn/2012/02/23/passing-properties-into-sitecore-sublayouts/

<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" 
 Parameters="device=mobile" />

<img src="/includes/images/search.png" alt="Search-<%=GetParameter("device") %>" style="float:left"/>

这是该文章中提到的帮助函数。

private NameValueCollection _ParameterCollection;
public NameValueCollection ParameterCollection 
{ 
    get
    {
        if (_ParameterCollection == null)
        {
            _ParameterCollection = new NameValueCollection();
            string[] parameters = (Parent as Sublayout).Parameters.Split('&');
            string[] pair;
            foreach (string paramPair in parameters)
            {
                pair = paramPair.Split('=');
                _ParameterCollection.Add(pair[0], pair[1]);
            }
        }
        return _ParameterCollection;
    } 
}

public string GetParameter(string key)
{
    string value = String.Empty;
    string parameterValue = ParameterCollection.Get(key);
    if (parameterValue != null)
    {
        value = parameterValue;
    }
    return value;
}

答案 1 :(得分:0)

我最终复制了子布局部分 - 使用新名称并更改所有标记元素以反映不同的名称。