DataType.Time 的 EditorTemplate 将不会应用

EditorTemplate for DataType.Time won't be applied

我有一个开始和结束时间的编辑器。

所以我在路径 'Views/Shared/EditorTemplates/Time.cshtml'.

中创建了一个 EditorTemplate
@model string
 @{
  var htmlAttributes = this.GetControlHtmlAttributes();
        htmlAttributes.AddClass("time");
        htmlAttributes.AddAttribute("style", "background-color: fuchsia");
    }
@Html.TextBoxFor(m => m, htmlAttributes: htmlAttributes)

在我看来,我叫

<td>
    @Html.EditorFor(m => m[i].kal_von)
</td>
<td>
    @Html.EditorFor(m => m[i].kal_bis)
</td>

(请注意:如果我这样调用它是行不通的:

<td>
    @Html.EditorFor(m => m[i].kal_bis, "Time")
</td>

)

模型看起来像这样:

[StringLength(5)][DataType(DataType.Time)][DataMember(EmitDefaultValue = false)]
[DisplayNameAttribute("d_kal_termin.kal_von")]
public string kal_von { get; set; }

[StringLength(5)][DataType(DataType.Time)][DataMember(EmitDefaultValue = false)]
[DisplayNameAttribute("d_kal_termin.kal_bis")]
public string kal_bis { get; set; }

谢谢!!

您需要将 UIHint 添加到模型中

[StringLength(5)]
[DataType(DataType.Time)]
[DataMember(EmitDefaultValue = false)]
[UIHint("Time")]
[DisplayNameAttribute("d_kal_termin.kal_von")]
public string kal_von { get; set; }

[StringLength(5)]
[DataType(DataType.Time)]
[DataMember(EmitDefaultValue = false)]
[UIHint("Time")]
[DisplayNameAttribute("d_kal_termin.kal_bis")]
public string kal_bis { get; set; }

你的代码中有这样的东西吗?在哪里替换默认的 RazorViewEngine?

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new AppRazorViewEngine());

如果是这样,请确保您的自定义 ViewEngine 包含您的 EditorTemplates 目录的路径。