使用asp.net脚手架启动日期时间选择器

本文关键字:日期 时间 选择器 启动 脚手架 asp net 使用 | 更新日期: 2023-09-27 18:28:40

我有一个具有DateTime属性的简单模型类。

    [Required]
    [DataType(DataType.DateTime)]
    public DateTime When { get; set; }

当前Visual Studio脚手架生成此:

    <div class="form-group">
        @Html.LabelFor(model => model.When, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.When, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.When, "", new { @class = "text-danger" })
        </div>
    </div>

这是一个简单的文本框。我想覆盖默认脚手架。我可以在默认模板中添加一些内容,然后我的更改就会生成。

如何配置Create.cs.t4文件以生成引导程序日期时间选择器?

当这是枚举时,有一个if条件需要检查

else if (property.IsEnum && !property.IsEnumFlags) 

或布尔型

bool isCheckbox = property.TypeName.Equals(boolType);

我的解决方案是添加if语句来检查它是否是日期时间,并生成我自己的输入字段。我查了一下网页,但这不是一个常见的话题。

使用asp.net脚手架启动日期时间选择器

如果你想改变脚手架,你需要这样做:

bool isDateTime = property.TypeName.Equals("System.DateTime");

为了检查属性的数据类型,您需要检查TypeName。TypeName采用数据类型的字符串值,并且需要包含名称空间。例如System.Int32System.DateTimeSystem.Bool

您可以编写html标签或创建自己的html助手,然后执行以下操作:

<# if (isDateTime) {#>
        @Html.CutomeDateHelperFor(modelItem => <#= "item." + GetValueExpression(property) #>)
 <# } #>

除了脚手架,另一个更简单的解决方案是使用编辑器模板。您将为DateTime类型创建编辑器模板,所有editorfor标记都将被翻译为您的自定义html标记,其中包括Bootstap日期和时间选择器或任何其他类似jquery ui日历的东西。

以这个为例:https://www.simple-talk.com/dotnet/asp.net/extending-editor-templates-for-asp.net-mvc/