Html.EditorFor()不遵守数据注释

4

我有一个模型,其属性如下:

[Required]
[HiddenInput(DisplayValue = false)]
public override int Id { get; set;}

现在,据我了解,HTML辅助程序在呈现属性时应该遵守这些数据注释属性。然而,当我这样做时:
@Html.EditorFor(m => m.Id) 

以下HTML代码已生成:
<input class="text-box single-line" id="Id" name="Id" type="number" value="2">

我希望该字段被隐藏,但实际上它没有被隐藏。我已经找到了另一个帮助程序,它确实遵守注释属性:

@Html.Editor("Id")

这将生成隐藏字段的html代码,如下所示:

<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="2">

据我了解,这两个辅助方法都来自System.Web.Mvc.Html命名空间,实现都在System.Web.Mvc 5.2.3.0版本程序集中。我想使用@Html.EditorFor()方法,但也需要数据注释。欢迎提供所有的想法。

3
可能与继承有关?可能助手仅在基类级别查找属性?只是一种想法。 - Jakub Jankowski
@JakubJankowski这就是了!有些方法查看基类,而其他方法则不查看,但肯定解决了问题。谢谢。 - Toodleey
@Christos,这怎么可能是你标记的那个帖子的重复? - Toodleey
@Toodleey 我并不是出于兴趣将问题标记为重复。我已经阅读了你的帖子,我觉得这是我提到的那个问题的重复。因为我没有看到任何重新开放的投票,为了公平起见,我自己重新打开了这个问题。 - Christos
@Toodleey 很高兴我的建议有所帮助!今天我也学到了一些东西。 - Jakub Jankowski
1
@JakubJankowski,很抱歉让你失望了,但你没有学到任何东西(你的猜测是错误的)。 - user3559349
1个回答

2

由@JakubJankowski在评论中解决。 @Html.EditorFor()不遵守覆盖属性上的数据注释。


错误 - EditorFor() 将遵守覆盖属性上的数据注释。 由 @Html.EditorFor(m => m.Id) 生成的 HTML 不会生成 <input class="text-box single-line" id="Id" name="Id" type="number" value="2">,除非您还有其他未显示的内容(它将生成 <input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="0">)。 - user3559349

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接