Как добавить Date Picker в asp.net mvc 3? - PullRequest
0 голосов
/ 18 января 2012

В Asp.net MVC 3 как добавить и использовать DatePicker?

Ответы [ 6 ]

2 голосов
/ 18 января 2012

Правильный способ сделать это - добавить EditorTemplate для типа DateTime.Вы добавляете UserControl в Views\Shared\EditorTemplates\, устанавливаете @model в DateTime и получаете отображение для отображения любого вида просмотра / выбора даты и т. Д.

Затем, когда вы используете @Model.EditorFor(),будет правильно отображать правильный вид и привязывать правильное значение к вашей модели.

Лорд Google помог мне найти: http://www.asp.net/mvc/tutorials/javascript/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-4 (<< новее) <br>AND
http://www.nickharris.net/2010/08/asp-net-mvc-editor-template-for-jquery-datepicker/

Обе статьи описывают, как добавить шаблон EditorTemplate, использующий JqueryUI DateTimePicker

1 голос
/ 30 мая 2013
<table>
<tr>
<td style="background-color:#FFC0CB;color:#FF6347">@Html.TextBoxFor(model => 
model.Createddt, new { DateTime.Now, id="datepicker"})</td>
</tr>
</table>

<script type="text/javascript">
$(document).ready(function () {
$("#datepicker").datapicker();
});
</script>
0 голосов
/ 21 февраля 2014

Я создал UserControl и назвал его «DateTime» (DateTime.ascx) в представлении Views / Shared / EditorTemplates, добавив это:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%: Html.TextBox("",  String.Format("{0:yyyy-MM-dd}", Model.HasValue ? Model : DateTime.Today), new { @class = "dp"})%>

Мой взгляд тогда выглядел так:

<div class="editor-field">
        @Html.EditorFor(model => model.ReleaseDate) 
        @Html.ValidationMessageFor(model => model.ReleaseDate)
    </div>

Мой скрипт выглядит так:

<script type="text/javascript">
$(function () {
    $(".dp").datepicker();
});

Это были ссылки, которые я добавил в представление (если у вас их нет, вы можете найти их с помощью Nuget и набрать "jquery.ui"):

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.datepicker.min.js") " type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.datepicker.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.core.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.core.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/DatePickerReady.js")" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.datepicker.css")" type="text/css" rel="Stylesheet"/>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.core.css")" type="text/css"/ rel="Stylesheet"/>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.theme.css")" type="text/css" rel="Stylesheet"/>
0 голосов
/ 15 октября 2013

Создание вспомогательного расширения Теперь, когда мы создали средство выбора рабочей даты, давайте добавим его в метод расширения, чтобы очистить пользовательский интерфейс и позволить нам использовать его в другом месте. Создайте новую папку в корневом каталоге проекта с именем «UI» и создайте новый класс с именем «HtmlHelperExtensions.cs» в нашей новой папке:

enter image description here

В новом классе добавьте к нему следующий метод (вам нужно добавить предложение using в System.Web.MVC & System.Text):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.Mvc;

namespace DatePickerHarness.UI
{
    public static class HtmlHelperExtensions
    {

     public static string DatePicker(this HtmlHelper helper, string name, string imageUrl, object date)
        {
            StringBuilder html = new StringBuilder();

            // Build our base input element
            html.Append("<input type=\"text\" id=\"" + name + "\" name=\"" + name + "\"");

            // Model Binding Support
            if (date != null)
            {
                string dateValue = String.Empty;

                if (date is DateTime? && ((DateTime)date) != DateTime.MinValue)
                    dateValue = ((DateTime)date).ToShortDateString();
                else if (date is DateTime && (DateTime)date != DateTime.MinValue)
                    dateValue = ((DateTime)date).ToShortDateString();
                else if (date is string)
                    dateValue = (string)date;

                html.Append(" value=\"" + dateValue + "\"");
            }

            // We're hard-coding the width here, a better option would be to pass in html attributes and reflect through them
            // here ( default to 75px width if no style attributes )
            html.Append(" style=\"width: 75px;\" />");

            // Now we call the datepicker function, passing in our options.  Again, a future enhancement would be to
            // pass in date options as a list of attributes ( min dates, day/month/year formats, etc. )
            html.Append("<script type=\"text/javascript\">$(document).ready(function() { $('#" + name + "').datepicker({ showOn: 'button', buttonImage: '" + imageUrl + "', duration: 0 }); });</script>");

            return html.ToString();
        }
  }
  }

Чтобы добавить пространство имен, откройте ваш web.config (вы можете использовать web.config в папке 'View' или перейти в корень и добавить его туда) и добавить следующее в элемент namespaces:

<add namespace="YourProjectNameGoesHere.UI"/>

Теперь, когда мы получили это, мы можем получить доступ к методу расширения из нашего представления:

enter image description here

Теперь, когда у нас есть возможность вызывать наш метод расширения, давайте сделаем это немного более захватывающим и обернем все в форму, которая будет отправлена ​​обратно в действие в нашем контроллере. Сначала нам нужно добавить нашу полную форму в веб-интерфейс:

<%= Html.DatePicker("Date", "/Content/images/calendar.gif", this.ViewData["TheDate"]) %>

URL ссылки

0 голосов
/ 19 января 2012

Вы можете создать текстовое поле, а затем использовать jquery, чтобы сделать его средством выбора даты, вот фрагмент кода. Не забудьте ссылаться на js-библиотеки jquery & jquery UI в своем проекте.

    <script>
      $(function() {
        $( "#datepicker" ).datepicker();
      });
    </script>

@Html.TextBox("datepicker")
0 голосов
/ 18 января 2012

Существует много разных способов добавления средства выбора даты, и я не могу представить, чтобы какой-либо из них значительно отличался для использования с бритвой.Простой поиск дал это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...