2016-01-02 2 views
0

У меня есть простой класс модели с свойством DateTime.Bootstrap datetimepicker с asp .net scaffolding

[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?

Существует, если условие, чтобы проверить, когда это перечисление

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

или тип BOOL

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

Мое решение добавить, если заявление, чтобы проверить, является ли это DateTime и создать мой собственный поле ввода. Я проверил веб, но это не общая тема.

+0

Возможный дубликат [ои EditorTemplate не используется в MVC4 для DataType.Date] (http://stackoverflow.com/questions/13925127/custom-editortemplate-not -being-used-in-mvc4-for-datatype-date) –

+0

Это не дубликат шаблона пользовательского редактора. Это отдельный вопрос о Лесах. Его можно решить другим способом вокруг проблемы (Custom Editor Template), который не является ответом – Amir

ответ

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, и все теги editorfor будут переведены на ваши пользовательские теги html, которые включают в себя дату и время выбора Booststap или что-нибудь еще, например jquery ui calender.

См этот как пример: https://www.simple-talk.com/dotnet/asp.net/extending-editor-templates-for-asp.net-mvc/

 Смежные вопросы

  • Нет связанных вопросов^_^