Bootstrap datetimepicker с лесами asp .net
У меня есть простой класс модели со свойством DateTime.
[Required]
[DataType(DataType.DateTime)]
public DateTime When { get; set; }
В настоящее время Visual Studio Scaffolding генерирует это:
<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 для генерации начальной загрузки datetimepicker?
Существует условие if для проверки, когда это перечисление
else if (property.IsEnum && !property.IsEnumFlags)
или тип bool
bool isCheckbox = property.TypeName.Equals(boolType);
Мое решение состоит в том, чтобы добавить оператор if, чтобы проверить, является ли он датой-временем, и создать собственное поле ввода. Я проверил сеть, но это не обычная тема.
1 ответ
Если вы хотите изменить строительные леса, вам нужно сделать это:
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
type и все тэги editorfor будут переведены в ваши пользовательские html-тэги, которые включают в себя Boosttap Date and time picker или что-то еще, например jquery ui calender.
Посмотрите этот пример: https://www.simple-talk.com/dotnet/asp.net/extending-editor-templates-for-asp.net-mvc/