none
Deutsche ClientValidierung in Original VS Template einbinden RRS feed

  • Frage

  • Hallo liebe Community

    Ich habe gestern den ganzen Tag damit verbracht zu versuchen die Clientvalidierung eines Date Objekts hinzubekommen.
    Leider bis jetzt ohne Erfolg. Alles durchsucht und verschiedene NuGet Pakete probiert, aber als Anfänger bekomme ich es einfach nicht hin. Als Info: Folgende Bundles habe ich eingebunden:

     Public Sub RegisterBundles(ByVal bundles As BundleCollection)
    
    
            bundles.Add(New ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js",
                        "~/Scripts/jquery.unobtrusive-ajax.js"))
    
            bundles.Add(New ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"))
    
    
    
            bundles.Add(New ScriptBundle("~/bundles/jqueryui").Include(
                "~/Scripts/jquery-ui-{version}.js"))
    
            ' Use the development version of Modernizr to develop with and learn from. Then, when you're
            ' ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
            bundles.Add(New ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"))
    
            bundles.Add(New ScriptBundle("~/bundles/bootstrap").Include(
                      "~/Scripts/bootstrap.js",
                      "~/Scripts/bootstrap-datepicker.js",
                      "~/Scripts/respond.js"))
    
            bundles.Add(New StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/bootstrap-datepicker3.css",
                      "~/Content/site.css"))
    
            bundles.Add(New StyleBundle("~/Content/themes/base/css").Include(
                  "~/Content/themes/base/jquery.ui.core.css",
                  "~/Content/themes/base/jquery.ui.resizable.css",
                  "~/Content/themes/base/jquery.ui.selectable.css",
                  "~/Content/themes/base/jquery.ui.accordion.css",
                  "~/Content/themes/base/jquery.ui.autocomplete.css",
                  "~/Content/themes/base/jquery.ui.button.css",
                  "~/Content/themes/base/jquery.ui.dialog.css",
                  "~/Content/themes/base/jquery.ui.slider.css",
                  "~/Content/themes/base/jquery.ui.tabs.css",
                  "~/Content/themes/base/jquery.ui.datepicker.css",
                  "~/Content/themes/base/jquery.ui.progressbar.css",
                  "~/Content/themes/base/jquery.ui.theme.css"))
    
    
    
    
        End Sub

    Ich habe in Visual Studio ein Standard-Template erstellt und einige Controller zum testen erstellt.

    Nun möchte ich in einem View ein Textfeld mit einem Datumswert versehen und dann einen Post auf den Controller senden.
    Im ViewModel habe ich folgendes:

    Namespace ViewModel
        Public Class CreateMenuNewVM
    
            <DataType(DataType.Date)>
            <DisplayFormat(DataFormatString:="{0:d}", ApplyFormatInEditMode:=True)>
            Public Property CurrDate As Date
    
        End Class
    End Namespace

    Der Controller gibt dieses ViewModel zurück und im View habe ich folgendes:

    @ModelType PoMe.ViewModel.CreateMenuNewVM
    @Code
        ViewData("Title") = "CreateNew1"
        Layout = "~/Views/Shared/_Layout.vbhtml"
    End Code
    
    <h2>CreateNew1</h2>
    
    @Using (Html.BeginForm())
        @Html.AntiForgeryToken()
        
        @<div class="form-horizontal">
            <h4>CreateMenuNewVM</h4>
            <hr />
            @*@Html.ValidationSummary(True, "", New With { .class = "text-danger" })*@
            <div class="form-group">
                @Html.LabelFor(Function(model) model.CurrDate, htmlAttributes:= New With { .class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(Function(model) model.CurrDate, New With {.htmlAttributes = New With {.class = "form-control datecontrol"}})
                    @*@Html.ValidationMessageFor(Function(model) model.CurrDate, "", New With { .class = "text-danger" })*@
                </div>
            </div>
    
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Save" class="btn btn-default" />
                </div>
            </div>
        </div>
    End Using
    
    <script>
        if (!Modernizr.inputtypes.date) {
            $(function () {
                $(".datecontrol").datepicker({
                    language: 'de'
                });
                   })
            }
    </script>
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
    
    @Section Scripts 
        @Scripts.Render("~/bundles/jqueryval")
    End Section

    Die Clientvalidierung habe ich im Moment ausgeschaltet da diese ja nicht funzt. Lade ich den View steht folgendes im Feld:

    "05.04.2016" (für morgen) was ja auch dem Format entspricht welches in als DataAnnotation angegeben habe. Klicke ich nun in das Feld kommt das Kalendercontrol und sobald ich in diesem klicke steht das Control auf dem Monat Mai und wenn ich jetzt das morgige Datum wähle steht das Datum im Format: 04/05/2016. Tippe ich nun manuell ein Datum ein wie 20.04.2016 kann ich das Form nicht absenden, stattdessen Popt das Kalender-Control auf.

    Ich habe die Testseite mal online gestellt zum probieren: http://spsonline.remotewebaccess.com/sps/menuservice/Menu/CreateNew

    Vielen, vielen Dank im Voraus für die Hilfe
    lg Sascha




    • Bearbeitet NoFear23m Montag, 4. April 2016 10:31
    Montag, 4. April 2016 10:28