Как добавить Date Picker Bootstrap 3 в проект MVC 5 с помощью движка Razor?
мне нужны направления о том, как установить Даты Bootstrap 3 в проекте MVC 5 с использованием движка Razor. Я нашел эту ссылку здесь но не смог заставить его работать в VS2013.
копирование из примера в более поздней ссылке выше я уже сделал следующее:
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/bootstrap-datepicker.js", // ** NEW for Bootstrap Datepicker
"~/Scripts/respond.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/bootstrap-datepicker.css", // ** NEW for Bootstrap Datepicker
"~/Content/site.css"));
затем я добавил скрипт в представление индекса следующим образом
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$('.datepicker').datepicker(); //Initialise any date pickers
</script>
}
Теперь, как вызвать выбор даты здесь?
<div class="form-group input-group-sm">
@Html.LabelFor(model => model.DropOffDate)
@Html.TextBoxFor(model => model.DropOffDate, new { @class = "form-control", placeholder = "Enter Drop-off date here..." })
@Html.ValidationMessageFor(model => model.DropOffDate)
</div>
9 ответов:
этот ответ использует jQuery UI Datepicker, который является отдельным включить. Есть и другие способы сделать это без пользовательского интерфейса jQuery.
во-первых, вам просто нужно добавить
datepicker
класса в текстовое поле, в дополнение кform-control
:<div class="form-group input-group-sm"> @Html.LabelFor(model => model.DropOffDate) @Html.TextBoxFor(model => model.DropOffDate, new { @class = "form-control datepicker", placeholder = "Enter Drop-off date here..." }) @Html.ValidationMessageFor(model => model.DropOffDate) </div>
затем, чтобы убедиться, что javascript запускается после отображения текстового поля, вы должны поместить вызов datepicker в функцию jQuery ready:
<script type="text/javascript"> $(function () { // will trigger when the document is ready $('.datepicker').datepicker(); //Initialise any date pickers }); </script>
этот ответ просто применяет
type=date
атрибут в HTMLinput
элемент и полагается на браузер для предоставления выбора даты. Обратите внимание, что даже в 2017 году не все браузеры предоставляют свой собственный выбор даты, поэтому вы можете захотеть предоставить отступление.все, что вам нужно сделать, это добавить атрибуты свойства в модели представления. Пример для переменной
Ldate
:[DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] Public DateTime Ldate {get;set;}
предполагая, что вы используете MVC 5 и Visual Studio 2013.
Я надеюсь, что это может помочь кому-то, кто сталкивался с моей же проблемой.
этот ответ использует Bootstrap DatePicker Плагин, который не является родным для загрузки.
убедитесь, что вы устанавливаете Bootstrap DatePicker через NuGet
создайте небольшой фрагмент JavaScript и назовите его DatePickerReady.Яш сохранить его в каталог скриптов. Это позволит убедиться, что он работает даже в браузерах, отличных от HTML5, хотя в настоящее время их немного.
if (!Modernizr.inputtypes.date) { $(function () { $(".datecontrol").datepicker(); }); }
установить пучки
bundles.Add(New ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/bootstrap.js", "~/Scripts/bootstrap-datepicker.js", "~/Scripts/DatePickerReady.js", "~/Scripts/respond.js")) bundles.Add(New StyleBundle("~/Content/css").Include( "~/Content/bootstrap.css", "~/Content/bootstrap-datepicker3.css", "~/Content/site.css"))
теперь Установите тип данных, чтобы при использовании EditorFor MVC определял, что будет использоваться.
<Required> <DataType(DataType.Date)> Public Property DOB As DateTime? = Nothing
ваш код должен быть
@Html.EditorFor(Function(model) model.DOB, New With {.htmlAttributes = New With {.class = "form-control datecontrol", .PlaceHolder = "Enter Date of Birth"}})
и вуаля
добавьте только эти две строки перед свойством datetime в вашей модели
[DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
и результат будет :
[DataType(DataType.Date)] public DateTime BirthDate { get; set; }
украсьте свою модель вот так. можно использовать bootstrap date time picker я использовал этот. https://github.com/Eonasdan/bootstrap-datetimepicker/
Я полагаю, у вас уже есть пакеты для bootstrap css и js
ваши записи набора выбора даты
bundles.Add(new ScriptBundle("~/bundles/datePicker").Include( "~/Scripts/moment.min.js", "~/Scripts/bootstrap-datetimepicker.min.js")); bundles.Add(new StyleBundle("~/Content/datepicker").Include( "~/Content/bootstrap-datetimepicker.min.css"));
отображения расслоений на ваш взгляд макет
@Styles.Render("~/Content/datepicker") @Scripts.Render("~/bundles/datePicker")
ваш HTML в поле зрения
<div class="form-group"> @Html.LabelFor(model => model.BirthDate, htmlAttributes: new { @class = "lead col-md-2" }) <div class="col-md-10"> @Html.TextBoxFor(model => model.BirthDate, new { @class = "datetimepicker form-control" }) @Html.ValidationMessageFor(model => model.BirthDate, "", new { @class = "text-danger" }) </div> </div>
в конце вашего представления добавьте это.
<script> $(document).ready(function () { $('.datetimepicker').datetimepicker({ format: 'lll' }); }); </script>
1.убедитесь, что вы ref jquery.js сначала
2.проверьте макет, убедитесь, что вы называете "~ / bundles / bootstrap"
3.проверьте макет, см. раздел рендеринга позиции скриптов, он должен быть после "~ / bundles / bootstrap"
4.добавить класс "datepicker" в текстовое поле
5.ставить.'($ datepicker').datepicker (); in $(function () {...});
попытка предоставить краткое обновление, основанное на Enzero'ы ответ.
установить Bootstrap.Отмечать.
PM> install-package Bootstrap.Datepicker ... Successfully installed 'Bootstrap.Datepicker 1.7.1' to ...
на AppStart/BundleConfig.cs добавить соответствующие скрипты и стили в пучки.
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( //..., "~/Scripts/bootstrap-datepicker.js", "~/Scripts/locales/bootstrap-datepicker.YOUR-LOCALE-CODE-HERE.min.js")); bundles.Add(new StyleBundle("~/Content/css").Include( ..., "~/Content/bootstrap-datepicker3.css"));
в связанном представлении, в разделе скрипты, включить и настроить элемент управления datepicker.
@section scripts{ <script type="text/javascript"> //... $('.datepicker').datepicker({ format: 'dd/mm/yyyy', //choose the date format you prefer language: "YOUR-LOCALE-CODE-HERE", orientation: 'left bottom' }); </script>
В конце концов добавить datepicker класс в соответствующем элементе управления. Например, в текстовом поле и для формата даты в виде "31/12/2018" это будет:
@Html.TextBox("YOUR-STRING-FOR-THE-DATE", "{0:dd/MM/yyyy}", new { @class = "datepicker" })
Checkout Shield UI выбор даты для MVC. Мощный компонент, который можно интегрировать с помощью нескольких строк, таких как:
@(Html.ShieldDatePicker() .Name("datepicker"))