gpt4 book ai didi

.net - 编辑器模板不适用于 DisplayFormat

转载 作者:行者123 更新时间:2023-12-04 07:09:10 25 4
gpt4 key购买 nike

我正在尝试为 DateTime 字段创建一个编辑器模板,但它似乎不尊重我的 DisplayFormat 属性。

我的型号:

public class Project
{
[Display(Name="Project Name")]
[Required]
public string ProjectName { get; set; }

[Display(Name="Start Date")]
[DisplayFormat(DataFormatString="{0:M/d/yyyy}", ApplyFormatInEditMode=true)]
public DateTime? StartDate { get; set; }
}

文件夹/Views/Projects/EditorTemplates/DateTime.cshtml 中的我的编辑器模板
@model DateTime?
@Html.TextBoxFor(m => Model, new { @class="datepicker" })

这是将所有内容联系在一起的 View :
@model Project

<fieldset>
<legend>Project</legend>

<div class="editor-label">
@Html.LabelFor(m => m.ProjectName)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.ProjectName)
@Html.ValidationMessageFor(m => m.ProjectName)
</div>

<div class="editor-label">
@Html.LabelFor(m => m.StartDate)
</div>
<div class="editor-field">
@Html.EditorFor(m => m.StartDate)
@Html.ValidationMessageFor(m => m.StartDate)
</div>
</fieldset>

当我这样做时,我会看到日期的时间部分。当我删除编辑器模板时,它工作正常并且只显示日期部分。为什么当我有一个编辑器模板时它似乎忽略了 DisplayFormat?

最佳答案

让我们首先看看当您不使用模板时会发生什么。我添加了泛型类型以使其更明确区别是什么。

@Html.TextBoxFor<Product>(product => product.StartDate)

现在让我们看看你的模板编辑器:
@Html.TextBoxFor<DateTime?>(dateTime => dateTime)

注意到区别了吗?在后一种情况下,您只是在处理 DateTime 实例,这意味着您将丢失模型属性定义的元数据。

通过使用模板,您负责处理元数据,元数据应在 ViewData.ModelMetadata.* 中提供给您的模板。 .例如,在您的情况下,您需要使用 ViewData.ModelMetadata.DisplayFormatString 自己格式化日期。

关于.net - 编辑器模板不适用于 DisplayFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7123549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com