ASP.NET链接按钮生成错误标记

时间:2009-12-09 20:11:29

标签: asp.net linkbutton

我遇到链接按钮产生错误标记的问题。

它应该产生这样的东西:

<div style="margin-top: 5px; width: 150px; margin-left: auto; margin-right: auto;">
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel"
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')">
        <div>
            <span class="border top">
                <span class="border">
                </span>
            </span>
            <span class="icon cancel">
                Cancel
            </span>
            <span class="border bottom">
                <span class="border">
                </span>
            </span>
        </div>
    </a>
</div>

只注意一个标签。

最终会产生这样的结果:

<div style="margin-top: 5px; width: 150px; margin-left: auto; margin-right: auto;">
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel"
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')">
    </a>
    <div>
        <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel"
        class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')">
            <span class="border top">
                <span class="border">
                </span>
            </span>
            <span class="icon cancel">
                Cancel
            </span>
            <span class="border bottom">
                <span class="border">
                </span>
            </span>
        </a>
    </div>
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel"
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')">
    </a>
</div>

现在请注意3(!)锚标记。

它只发生在特定服务器上的特定浏览器上,服务器在IIS 6上运行ASP.NET 2.0,使用Firefox 3.5访问该页面。

更新:我使用FF视图源查看代码,没有安装插件,该文件应该是XHTML 1.1 Transitional,但我不认为它验证,因为你不能在锚标签内部使用div标签。

1 个答案:

答案 0 :(得分:0)

你是如何看到这个标记的?在Firebug?在安装了TidyHTML的FF源查看器中?

使用什么(X)HTML声明? HTML 4.1? XHTML过渡?严格?

我问的原因是,<a>标记被定义为内联元素,因此将它包装在元素周围是不合法的,例如<div>代码。

您在FF中看到的来源可能已得到纠正,可以通过在div标签内部和末尾添加额外的锚标签来解决此问题。

你是如何看到这个标记的?在Firebug?在安装了TidyHTML的FF源查看器中?

使用什么(X)HTML声明? HTML 4.1? XHTML过渡?严格?

我问的原因是,<a>标记被定义为内联元素,因此将它包装在元素周围是不合法的,例如<div>代码。

您在FF中看到的来源可能已得到纠正,可以通过在div标签内部和末尾添加额外的锚标签来解决此问题。


Nope,View Source就像FF一样修复它 - 如果你想检查一下,你可以安装ViewSourceWith plugin,并在你选择的NotePad中查看源代码 - 我注意到这两者之间存在差异

与ASP.NET 1.1不同,ASP.NET 2.0中的BrowserCaps确实识别FF,Safari等,因此一般输出应该与您在IE中看到的不同。