रेजर इंजन का उपयोग करके एमवीसी 5 प्रोजेक्ट पर डेट पिकर बूटस्ट्रैप 3 कैसे जोड़ें?


81

रेजर इंजन का उपयोग करके MVC 5 प्रोजेक्ट पर दिनांक पिकर बूटस्ट्रैप 3 स्थापित करने के तरीके के बारे में मुझे कुछ गाइड लाइन्स की आवश्यकता है । मुझे यहाँ यह लिंक मिला लेकिन यह 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>

कृपया हमें अपना cshtml / रेजर कोड दिखाएं जो आप काम कर रहे हैं वह काम नहीं करता है। धन्यवाद
एरिक Bishard

उत्तर के लिए धन्यवाद। मैंने अपने पोस्ट को तदनुसार अपडेट किया है
बेन जूनियर

मैं वी.एस. आग लगाऊंगा और देखूंगा कि क्या मैं इसका पता लगा सकता हूं!
एरिक बिशर्ड

क्या आपने फ़ाइलों को जोड़ने के लिए NuGet का उपयोग किया है या आपने उन्हें मैन्युअल रूप से जोड़ा है?
मेहदीवे

वकार अहमद अब तक का सबसे सरल उपाय है।
डाइग्लॉक

जवाबों:


79

यह उत्तर jQuery UI Datepicker का उपयोग करता है , जो एक अलग शामिल है। JQuery UI को शामिल किए बिना ऐसा करने के अन्य तरीके हैं।

सबसे पहले, आपको बस 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>

फिर, यह सुनिश्चित करने के लिए कि टेक्स्टबॉक्स के प्रस्तुत होने के बाद जावास्क्रिप्ट को ट्रिगर किया गया है, आपको jp तैयार फ़ंक्शन में डेटपिकर कॉल डालना होगा:

<script type="text/javascript">
    $(function () { // will trigger when the document is ready
       $('.datepicker').datepicker(); //Initialise any date pickers
    });
</script>

4
हाँ, यह ठीक इसी तरह से मेरा कोड अभी है और यह काम नहीं कर रहा है
एरिक बिशर्ड

1
यही कारण है कि मैं फाउंडेशन का उपयोग करता हूं! मेरे पास वही काम है जो आपने किया, मैंने '@class = "फॉर्म-कंट्रोल डेटपिकर"' और '@क्लास = "डेटपिकर फॉर्म-कंट्रोल" "की कोशिश की और कोई पासा नहीं
एरिक बिशर्ड

3
यदि, किसी भी संयोग से, आप इसे आंशिक दृश्य में कह रहे हैं, तो स्क्रिप्ट को अनुक्रमणिका पृष्ठ में होना चाहिए या यदि यह आंशिक दृश्य है तो यह काम नहीं करेगा। यह भी तय की गई समस्याओं में से एक थी
बेन जूनियर

क्या मैं रेजर को स्वचालित कर सकता हूं ताकि यदि [DataType(DataType.Date)]किसी क्षेत्र पर परिभाषित किया गया है तो उसे स्वचालित रूप से datepickerसीएसएस वर्ग जोड़ना चाहिए और जेएस चलाना चाहिए ?
शिम्मी वेइटहैंडलर

1
विजुअल स्टूडियो 2015 में जो MVC 5 टेम्प्लेट हैं उनमें JQuery UI शामिल नहीं है, इसलिए मुझे पूरा यकीन है कि आपको इसे इंस्टॉल करने से पहले संदर्भ देना होगा। संबंधित ट्यूटोरियल के लिंक के साथ यहां एक अच्छी चर्चा है: फ़ोरम .asp.net
पॉल एंजेलो

61

यह उत्तर केवल HTML तत्व पर type=dateविशेषता को लागू inputकरता है और एक तिथि पिकर की आपूर्ति करने के लिए ब्राउज़र पर निर्भर करता है। ध्यान दें कि 2017 में भी, सभी ब्राउज़र अपनी स्वयं की दिनांक पिकर प्रदान नहीं करते हैं, इसलिए आप फ़ॉल बैक प्रदान करना चाह सकते हैं।

आपको बस इतना करना है कि व्यू मॉडल में प्रॉपर्टी के लिए विशेषता जोड़ें। चर के लिए उदाहरण Ldate:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
Public DateTime Ldate {get;set;}

मान लें कि आप MVC 5 और विज़ुअल स्टूडियो 2013 का उपयोग कर रहे हैं।


3
यह सबसे अच्छा जवाब है! क्या समय और तारीख चुनने का कोई तरीका है? [DataType(DataType.DateTime)] public DateTime BirthDate { get; set; }मेरे लिए काम नहीं किया।
योडा

2
सबसे सरल उपाय यहाँ है
होआंग त्रिनह

26
यह सही जवाब नहीं है! यह समाधान केवल ब्राउज़र विशिष्ट कैलेंडर को दिनांक फ़ील्ड के लिए ब्राउज़र पर प्रदर्शित करने में सक्षम करेगा। जिसका बूटस्ट्रैप डेटाटाइम प्लगइन से कोई लेना-देना नहीं है।
इलटर

3
यह IE 11 और FF 38 के साथ काम नहीं करेगा। केवल क्रोम इसे उठाएगा।
इमिरजा

1
इस समाधान के साथ दूसरा मुद्दा यह है कि दिनांक फ़ील्ड को संपादित करते समय, मैं पहले से मौजूद दिनांक मान के बजाय "mm / dd / yyyy" देखता हूं।
पॉल एंजेलो

19

अपने मॉडल में डेटाटाइम प्रॉपर्टी से पहले इन दो लाइनों को जोड़ें

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

और परिणाम होगा:एमवीसी एप्लीकेशन में डेट पिकर


लेकिन क्या आप व्यू में उपयोग करेंगे? मैंने TextBoxFor की कोशिश की, लेकिन यह अभी भी एक टेक्स्टबॉक्स है
हार्म्बे अटैक हेलीकॉप्टर

यह विधि केवल कुछ ब्राउज़रों में काम करती है जैसे, क्रोम।
Kazem

IE अपने समाधान असफल हो जाएगा!
इमिरज़ा

अगर किसी के पास यह त्रुटि थी: अपरिभाषित की संपत्ति 'एमएसआई' को नहीं पढ़ सकता है। इसने इसे ठीक कर दिया
रुबोनो 4

19

मुझे उम्मीद है कि यह मेरी समस्या का सामना करने वाले किसी व्यक्ति की मदद कर सकता है।

यह उत्तर बूटस्ट्रैप DatePicker प्लगइन का उपयोग करता है , जो बूटस्ट्रैप का मूल निवासी नहीं है।

सुनिश्चित करें कि आप NuGet के माध्यम से बूटस्ट्रैप DatePicker स्थापित करें

जावास्क्रिप्ट का एक छोटा सा टुकड़ा बनाएँ और इसे DatePickerReady.js नाम दें इसे लिपियों में सेव करें। यह सुनिश्चित करेगा कि यह गैर एचटीएमएल 5 ब्राउज़रों में भी काम करता है, हालांकि आजकल वे बहुत कम हैं।

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"))

अब Datatype सेट करें ताकि जब 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"}})

और वोइला

यहाँ छवि विवरण दर्ज करें


1
पुनश्च - बंडल बंडल में App_Start फ़ोल्डर में बंडल करें।
अमित

आप उस भाग को कहां अपडेट करते हैं जो <आवश्यक> <DataType (DataType.Date)> सार्वजनिक संपत्ति DOB के रूप में दिनांकित है? = कुछ भी नहीं
एलन

यह VB.NET प्रतीत होता है, उन लोगों के लिए जो अपने बालों को फाड़ते हैं। इसे c # में बदलने की कोशिश की, लेकिन कोई फर्क नहीं पड़ता कि मैंने कोशिश की यह कुछ भी नहीं किया।
स्टीवकेव

यह एक अच्छा विचार लगता है, लेकिन आपके समाधान को दोहराने के लिए बहुत सारे विवरण। उदाहरण के लिए, मेरे पास स्क्रिप्स फ़ोल्डर नहीं है, और न ही एक बंडल फ़ोल्डर, जिसे आपका कोड स्पष्ट रूप से कुछ स्क्रिप्ट से भरा होने की उम्मीद करता है?
एलन बलजे

7

एनज़रो के उत्तर के आधार पर एक संक्षिप्त अद्यतन प्रदान करने का प्रयास किया जा रहा है ।

  • Bootstrap.Datepicker पैकेज स्थापित करें ।

    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"));
    
  • संबंधित दृश्य में, स्क्रिप्ट्स सेक्शन में, डेटपिकर को सक्षम और अनुकूलित करें।

    @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>
    
  • अंत में संबंधित नियंत्रण में डेटापिक क्लास जोड़ें । उदाहरण के लिए, टेक्स्टबॉक्स में और दिनांक प्रारूप में "31/12/2018" की तरह यह होगा:

    @Html.TextBox("YOUR-STRING-FOR-THE-DATE", "{0:dd/MM/yyyy}", new { @class = "datepicker" })
    

नमस्ते, आप इसे एक तिथि सीमा कैसे बनाते हैं, अर्थात उपयोगकर्ता को दो से तारीखें लेने की आवश्यकता है
ट्रांसफॉर्मर

मैं इसे लागू करना पसंद करूंगा लेकिन मेरे पास बंडलकॉन्फ़्स नहीं हैं। रेजर पेज .net कोर 2 MVVM आर्किटेक्चर।
एलन बलजे

4
[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }

अपने मॉडल को इस तरह से सजाएं। मैं एक बूटस्ट्रैप दिनांक समय पिकर का उपयोग कर सकता हूं जिसका मैंने यह उपयोग किया है। https://github.com/Eonasdan/bootstrap-datetimepicker/

मुझे लगता है कि आपके पास बूटस्ट्रैप सीएसएस और जेएस के लिए पहले से ही बंडल हैं

आपकी तिथि पिकर बंडल प्रविष्टियां

 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")

देखने में आपका एच.टी.एम.एल.

<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
कृपया विचार करें कि इनपुट प्रकार "तिथि" (डेटाटाइप द्वारा सेट) केवल अभी क्रोम, सफारी और ओपेरा द्वारा समर्थित है (जैसा कि आप यहां देख सकते हैं: w3schools.com/html/html_form_input_types.asp )।
लीज़ेलिज़ल डेस

1
@leiseliesel मैंने बूटस्ट्रैप दिनांक समय पिकर के उपयोग के साथ उत्तर अपडेट किया है।
dnxit

3

1. सुनिश्चित करें कि आप पहले jcery.js रेफरी करते हैं। 2. चेक
लेआउट पर, सुनिश्चित करें कि आप "~ / बंडलों / बूटस्ट्रैप" को
कॉल करते हैं। 3. चेक लेआउट, सेक्शन स्क्रिप्स की स्थिति देखें, यह "~ / बंडलों / बूटस्ट्रैप"
4 के बाद होना चाहिए .add क्लास "डेटपिकर" से टेक्स्टबॉक्स
5.put $ ('। डेटपिकर'); डेटपिकर (); $ में (फ़ंक्शन () {...});



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.