使用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语句来检查它是否是日期时间,并生成我自己的输入字段。我查了一下网页,但这不是一个常见的话题。
如果你想改变脚手架,你需要这样做:
bool isDateTime = property.TypeName.Equals("System.DateTime");
为了检查属性的数据类型,您需要检查TypeName。TypeName采用数据类型的字符串值,并且需要包含名称空间。例如System.Int32
、System.DateTime
、System.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/