4

我有一个带有属性的模型

[ReadOnly(true)]
public decimal BodyMassIndex { get; private set; }

在我打电话时的视图中

@Html.EditorForModel()

我仍然得到该属性的标准可编辑文本框

为什么是这样?如果文本框仍然是可编辑的,那么这个 DataAnnotation Attibute 的意义何在?

布拉德威尔逊的帖子

4

5 回答 5

4

这不是 DataAnnotation 属性。请注意,它位于System.ComponentModel命名空间中。数据注释位于System.ComponentModel.DataAnnotations命名空间中。

但是,这是我们可以考虑支持它的情况。但是您到底期望会发生什么,为什么要这样做?

于 2011-09-20T00:42:35.033 回答
0

AFAIK ReadOnlyAttribute 用于类的属性。来自 MSDN

 Members that are marked with the ReadOnlyAttribute set to true or that do not have a Set method 
 cannot be changed. Members that do not have this attribute or that are marked with the 
 ReadOnlyAttribute set to false are read/write, and they can be changed. The default is No.

所以你在你的类中使用它来防止修改属性。(至少我赋予该属性的含义)

如果你想要一个只读的文本框,请使用类似的东西

 @Html.TextBox("MyText", "my text", new { @readonly="readonly" })

@first of readonly 告诉编译器绕过保留字

于 2011-09-19T19:50:55.033 回答
0

您可以使用

@Html.TextBoxFor(x=> x.ModelProperty, new { @readonly="readonly"})
于 2011-09-19T21:29:09.603 回答
0

根据我对您的问题和对其他答案的评论的了解,您只是想显示 BodyMassIndex,而不是将其设置为可编辑。

如果是这种情况,请使用@Html.DisplayFor而不是@Html.EditorFor.

于 2011-09-20T05:32:16.383 回答
-1

这适用于带有 Bootstrap 3 的 Vs2013 C#。

            <div class="form-group">
                @Html.LabelFor(model => model.PasswordHash, htmlAttributes: new { @class = "control-label col-md-3" })
                <div class="col-md-6">
                    @Html.EditorFor(model => model.PasswordHash, new { htmlAttributes = new { @class = "form-control", @readonly="readonly" } })
                    @Html.ValidationMessageFor(model => model.PasswordHash, "", new { @class = "text-danger" })
                </div>
            </div>
于 2014-10-24T00:09:46.800 回答