重复子布局 - 如何使其独一无二 - 以满足 ADA 要求

Repetitive sublayout - How can I make it unique - to meet ADA requirements

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

设备决定显示哪个。但是,由于 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">

altaria-labelledby 标签 必须是唯一的。

谢谢

只是一个想法,将设备作为参数传递并制作标签,例如"search-desktop" 或 "search-mobile".

详情请看这里 - 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;
}

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