Asp.net mvc HTML5元素';图例';发生次数太少

Asp.net mvc HTML5元素';图例';发生次数太少,asp.net-mvc,html,razor,Asp.net Mvc,Html,Razor,我在MVC中有以下视图,并收到警告消息:Validation(HTML5):元素“legend”出现的次数太少了 @model Berwin.Models.ViewModels.UserViewModel @{ ViewBag.Title = "Press"; } <h2>Press Area</h2> @using (Html.BeginForm("Register", "PressController", FormMethod.Post)) { <fiel

我在MVC中有以下视图,并收到警告消息:
Validation(HTML5):元素“legend”出现的次数太少了

@model Berwin.Models.ViewModels.UserViewModel

@{
ViewBag.Title = "Press";
}

<h2>Press Area</h2>

@using (Html.BeginForm("Register", "PressController", FormMethod.Post))
{
<fieldset>
    @Html.TextBoxFor(model => model.FullName)
</fieldset>

<fieldset>
    @Html.TextBoxFor(model => model.Company)
</fieldset>

<fieldset>
    @Html.TextBoxFor(model => model.EmailAddress)
</fieldset>

<fieldset>
    @Html.CheckBoxFor(model => model.JoinMailingList)
</fieldset>
}
@model Berwin.Models.ViewModels.UserViewModel
@{
ViewBag.Title=“按”;
}
记者采访区
@使用(Html.BeginForm(“Register”,“PressController”,FormMethod.Post))
{
@Html.TextBoxFor(model=>model.FullName)
@Html.TextBoxFor(model=>model.Company)
@Html.TextBoxFor(model=>model.EmailAddress)
@CheckBoxFor(model=>model.JoinMailingList)
}

想知道为什么我会收到此警告,以及我需要做什么来修复此警告。

图例在字段集中是可选的

但试着这样做,以摆脱警告:

    <fieldset>
        <legend>User</legend>
        @Html.TextBoxFor(model => model.FullName)
    </fieldset>

使用者
@Html.TextBoxFor(model=>model.FullName)

你在哪里验证这个?图例元素是可选的:

内容模型:可选的图例元素,后跟流内容

组的名称由第一个图例元素给出,该元素是fieldset元素的子元素(如果有)

图例元素是字段集中字段的标题,使用方法如下

<fieldset>
  <legend>My Title></legend>
  ...
</fieldset>

根据HTML5规范,
标记不是
中的必需元素

图例元素表示其余内容的标题 图例元素的父字段集元素(如果有)

文件:


在您的情况下,这只是VisualStudio或插件提供的警告。这不是必需的,可能有一种方法可以消除Tools-Options-Text Editor-HTML-Validation下的警告。在这里,您还可以切换验证的目标(HTML5、XHTML1等)

Q:为什么会收到此警告?答:因为VisualStudioHTML5验证程序错误地认为在每个
字段集中都需要
图例。
字段集中其他表单元素和标签的
图例
”。它是可选的

另一方面,
字段集
用于将表单控件分组在一起。由于每个
fieldset
s只包含一个表单元素,因此它们实际上并不“分组”任何内容。为什么不把它们全部除掉呢?对于您向我们展示的简短表单,我不认为将这些表单输入的一部分与其他表单输入分开分组有什么好处。当您有独立的表单元素并且需要分组在一起时,
fieldset
会更有意义。例如:

<fieldset>
    <legend>How many lumps of sugar would you like?</legend>
    <input type="radio" name="lumps" value="1" id="lumps1" />
    <label for="lumps1">One lump</label>
    <br />
    <input type="radio" name="lumps" value="2" id="lumps2" />
    <label for="lumps2">Two lumps</label>
    <br />
    <input type="radio" name="lumps" value="0" id="lumps0" />
    <label for="lumps0">No lumps for me, thanks</label>
</fieldset>

你想要多少块糖?
一块

两块
谢谢,我不要结块

问:你需要做什么来解决这个问题?我认为根本不需要修理。但是,如果希望错误的验证程序消息消失,请将
图例作为第一个子元素添加到每个
字段集
,以防止Visual Studio错误地警告您
“元素“图例”出现的次数太少”
您需要更正Visual Studio的HTML和XHTML验证文件

VS随后将
标记视为
标记内的可选标记(根据规范)

为此,需要编辑两个文件:
html_5.xsd
xhtml_5.xsd
。对于VS2010,可在(例如)中找到:

C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\Common7\Packages\schemas\html\

采取的步骤:

  • 关闭Visual Studio

  • 使用文本编辑器打开上面文件夹中的文件
    html_5.xsd

  • 找到以下行:

    (注意有两行相似,第一行正确,第二行需要编辑):

  • 将该行编辑为:

  • 保存文件

  • 对同一文件夹中的文件
    xhtml_5.xsd
    重复此过程

  • 现在启动Visual Studio并查看HTML5文件-警告将消失

    我希望这对其他人有所帮助,并且我希望.xsd文件将在将来的更新中得到更正

    更新:

    您需要查找的行可能是:


    如果是这样,请将
    minOccurs=“1”
    属性更改为
    minOccurs=“0”

    我处理它的方式就是简单地隐藏图例:

    <fieldset>
    <legend runat=server visible="false"></legend>
    ...
    </fieldset>
    
    
    ...
    
    …剃须刀?试着看一下tagsI,你知道你正在使用Razor创建你的视图,但是你没有说是Visual Studio给了你这个错误还是W3C这样的在线验证器。如果Visual Studio的验证器认为需要图例,我建议它是错误的。@danRhul如果我错了,请有人纠正我。是的,它就像字段集的标题。这是不正确的,HTML5中不需要图例spec@Verkion-我还在下面添加了有关如何快速编辑.XSD文件以更正Visual Studio验证的说明。希望这对其他人有帮助。-1:图例元素是可选的,因为VS不应该生成关于它的警告。正确的解决办法是忽略警告。在我拙劣的见解中,添加一个可选元素,一个不需要取悦VS的错误警告的元素,充其量只是一个解决办法。不要添加你不需要的元素,特别是如果它们是可选的。如果你想让错误消失,这个博客帮了我的忙。哈哈又一个-1没有评论,你们真是一次旅行。我可能错了,但我只是引用了规范巫婆的答案,为什么OP在验证时会收到警告。我无法摆脱警告。在…HTLM-验证中尝试了几种组合。对于那些希望更新VS以正确验证
    标记的人,请参阅我的答案为什么投票失败。。。?!如果你要投反对票,至少加上一条评论。正如您正确指出的那样,
    图例
    是可选的,并且VisualStudio报告不正确。我知道我们接受的答案
    <fieldset>
    <legend runat=server visible="false"></legend>
    ...
    </fieldset>