Asp.net mvc 为什么我的显示模板不应用类?

Asp.net mvc 为什么我的显示模板不应用类?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有String和DateTime?的显示模板,如下所示: @model String @Html.TextBoxFor(m => Model, new { @class="read-only"}) @model DateTime? @{ String modelValue = ""; if (Model.HasValue) { if (Model.Value != DateTime.MinValue) {

我有
String
DateTime?
的显示模板,如下所示:

@model String
@Html.TextBoxFor(m => Model, new { @class="read-only"})

@model DateTime?
@{
    String modelValue = "";
    if (Model.HasValue)
    {
        if (Model.Value != DateTime.MinValue)
        {
            modelValue = Model.Value.ToShortDateString();
        }
    }
}
@Html.TextBox("", modelValue, new { @class = "date-picker date-text read-only", @readonly="readonly" })
我这样做是因为当我使用helper
DisplayFor
时,我更喜欢背景较暗的文本框,并且我喜欢标记
日期选择器
类,以便稍后将这些字段转换为适当的日期选择器

只读
仅定义背景颜色。在这一模型摘录中

[Editable(false)]
[Display(Name = "File Name")]
public string FileName { get; set; }

[Editable(false)]
[Display(Name = "File Report Date")]
public DateTime? FileReportDate { get; set; }
两个属性几乎相同,但是
String
的显示模板拒绝添加
read-only
类,其中
DateTime
的模板做得恰到好处

为什么会有这样的差异,为什么我的显示模板不将类添加到其内部
input
元素


添加:似乎根本没有使用字符串模板。为什么会这样?

添加@readonly=“readonly”有帮助吗?就像您为日期选择器添加的一样?您确定要调用显示模板吗?如果向模板中添加其他内容,如伪文本,它是否显示在文本框旁边?我刚刚将模板代码放在文件/Views/Shared/DisplayTemplates/String.cshtml中,并在新MVC internet应用程序的登录表单中执行
@Html.DisplayFor(m=>m.UserName)
,显示一个带有只读class@DanielJ.G. 看起来您的模板是正确的,甚至没有调用模板。现在我同时感到困惑和宽慰。视图如何调用模板
@Html.DisplayFor(m=>m.FieldName)?如果仅在调用该属性的模板时在视图中设置断点,并使用“单步执行”,它是否会选择其他模板?我还要检查将属性
[UIHint(“String”)]`添加到您的属性时会发生什么。。。我猜两个模板都位于同一个位置?这些模板位于哪里?默认情况下,它应该在Views/Shared/EditorTemplates/String.cshtml中。此外,请检查大小写,您可能需要使用
String
而不是
String