我有一个加载了两次的搜索框 - 一次用于桌面,一次用于移动。
设备确定显示的内容。但是,由于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标记必须是唯一的。
由于
答案 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)
我最终复制了子布局部分 - 使用新名称并更改所有标记元素以反映不同的名称。