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" })
我这样做是因为当我使用helperDisplayFor
时,我更喜欢背景较暗的文本框,并且我喜欢标记日期选择器
类,以便稍后将这些字段转换为适当的日期选择器
类只读
仅定义背景颜色。在这一模型摘录中
[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