当使用visual studio 2013或2015(任何版本)并处理以.asp.aspx结尾的文件时,它将始终显示警告Empty elements such as 'input' must end with />.即使我将编辑器的doctype从html5更改为html 4.01,也会出现这种情况。我相信编辑器在打开这些文件时会进入“html(web表单)”模式。
html5 - Visual Studio认为空的HTML5标记应在ASP中以斜杠结尾-LMLPHP
html5 - Visual Studio认为空的HTML5标记应在ASP中以斜杠结尾-LMLPHP
当使用.html扩展名处理同一文件时,不会发生这种情况,而且事实上,无论如何,我都无法在此模式下更改编辑器的doctype。
有没有人能找到解决这个问题的方法,或者我应该把它作为一个bug报告给ms?
另外,这个问题与Visual Studio uses XHTML tag closing for HTML5 tags不一样。
编辑:下面的示例代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Test</title>
</head>
<body>
    <form method="post" action="?" class="form-horizontal">
        <div class="form-group">
            <label class="col-sm-4 control-label" for="test">Test<span class="required-field">*</span></label>
            <div class="col-sm-8">
                <input class="form-control" type="text" maxlength="100" id="test" name="test" size="40" value="1" required>
            </div>
        </div>
    </form>
</body>
</html>

编辑2:在编辑HTML的文本编辑器选项时,有一个名为“格式化”的小节,允许您选择打开/关闭XHTML编码样式,但HTML(Web表单)没有这样的设置。
html5 - Visual Studio认为空的HTML5标记应在ASP中以斜杠结尾-LMLPHP
此外,HTML(Web窗体)具有“标记特定选项”窗口,但即使将“input”上的结束标记设置为“no closing tag”,问题仍然会出现。
html5 - Visual Studio认为空的HTML5标记应在ASP中以斜杠结尾-LMLPHP

最佳答案

我已经对这个问题进行了一些研究,我的结论是它确实是markup validation中的一个bug。
html5不要求input有一个结束字符,验证中的更改也会发生,因为使用xhtml doctype也会显示meta标记的警告,而不仅仅是输入的警告。
当使用open with打开aspx文件时,可以看到几个默认编辑器。默认值是“web表单编辑器”,但是可以选择“html编辑器”(不推荐,因为它不理解指令)和“html(web表单)编辑器”,任何一个都可以设置为默认值。
我试图通过改变“c:\程序文件\microsoft visual studio 14.0\common7\ide\extensions\microsoft\web tools\schemas\1033\html\html.xsd”(查找vs:description=“83”,输入元素的id)来查看是否可以改变,乍一看,它似乎只用于智能感知和自动完成。
我相信input和meta的区别在于input应该是一个可以成为服务器标签的标签。可能把它当作一个普通的标记来处理会有问题。
除了在“C:\ Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Editors\”中反汇编编辑器,我没有看到其他的调查方向。但奇怪的是,我没有在网上看到其他地方报道过这一情况。

07-28 03:14
查看更多