【问题标题】:Drop down missing closing option tag下拉缺少关闭选项标签
【发布时间】:2012-04-16 17:01:29
【问题描述】:

我有一个下拉列表,但缺少结束选项标签。这会导致网站无法通过针对 XHTML 1.1 的 W3C 验证

这是我的 HTML:

<select>
    <option value="">Select...
    <option value="val1">Value One
    <option value="val2">Value Two
</select>

我期望的地方:

<select>
    <option value="">Select...</option>
    <option value="val1">Value One</option>
    <option value="val2">Value Two</option>
</select>

HtmlSelectDropDownList 我都试过了。我尝试添加 ListItem 和数据绑定以填充它,但我每次都得到相同的 HTML。

知道是什么原因造成的吗?

编辑

我使用的是 .NET 3.5,该站点是 Sitecore 站点。

这是我的文档类型声明:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

这样填充:

HtmlSelect dropdown = new HtmlSelect();
dropdown.ID = _Data.ControlID;

List<DataCollectionItem> lisItemCollection = new List<DataCollectionItem>();

foreach (DataCollectionItem item in lisItemCollection)
    dropdown.Items.Add(new ListItem(item.Text, item.Value));

也试过了,结果一样:

dropdown.DataSource = lisItemCollection;
dropdown.DataTextField = "Text";
dropdown.DataValueField = "Value";
dropdown.DataBind();

浏览器文件:

Form.browser

<browsers>
  <browser refID="Default">
    <controlAdapters>
      <adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="Sitecore.Web.FormAdapter, Sitecore.Kernel" />
    </controlAdapters>
  </browser>
</browsers>

w3cValidator.browser

<browsers> 
  <!--  Browser capability file for the w3c validator 
        sample UA: "W3C_Validator/1.305.2.148 libwww-perl/5.803" 
  --> 
  <browser id="w3cValidator" parentID="default"> 
    <identification> 
      <userAgent match="^W3C_Validator" /> 
    </identification> 

    <capture> 
      <userAgent match="^W3C_Validator/(?'version'(?'major'\d+)(?'minor'\.\d+)\w*).*" /> 
    </capture> 

    <capabilities> 
      <capability name="browser" value="w3cValidator" /> 
      <capability name="majorversion" value="${major}" /> 
      <capability name="minorversion" value="${minor}" /> 
      <capability name="version" value="${version}" /> 
      <capability name="w3cdomversion" value="1.0" /> 
      <capability name="xml" value="true" /> 
      <capability name="tagWriter" value="System.Web.UI.HtmlTextWriter" /> 
    </capabilities> 
  </browser> 
</browsers>

【问题讨论】:

  • 你能发布你用来生成标记的代码吗?
  • 我猜你使用的是(非常)旧版本的 ASP.NET。这是什么版本?
  • 您是否查看了应用程序的 App_Browsers 文件夹?那里可能有一个 .browser 文件,声明了一个自定义适配器,它覆盖了您的 DDL 和 HtmlSelect。
  • 为什么不在源代码视图中手动添加?
  • 您在页面示例中是否有正确的文档类型 ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 并且 App_Browsers 文件夹存在于您的根文件夹中如jbl所述

标签: c# asp.net .net sitecore


【解决方案1】:

原来问题是由于 HTML Agility 包造成的。

HtmlNode.ElementsFlags.Remove("option");

更多详情请见this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2013-04-06
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2014-06-12
    相关资源
    最近更新 更多