Wie kann ich den Wert einer Kendo-Textfeld ein und übergeben diesen Wert an die Steuerung, so dass das Modell gültig?

Ich bin der Wert einer Kendo-Text-Box in Javascript, nachdem dieser Wert auf dem Bildschirm angezeigt, aber die Fehlermeldung erhalten, dass das Feld null ist, und die Modell-state invalid, wenn es um den controller. Wie setze ich den Wert des Textfeldes und behalten diesen Wert, so dass das Modell Staat ist gültig?

Hier ist, was ich habe:

  • ASP.net MVC-Visual Studio Projekt mit C#
  • Kendo/Telerik Scheduler Die Kontrolle
  • Ereignis-pop-up der Planer definiert in Vorlage (separates CSHTML-Datei)
  • In der Vorlage, ein Kendo TextBoxForControl für das Feld Titel
  • Auch in der Vorlage, ein Kendo-drop-down-Liste für das Feld TaskSourceWoId

Wenn ein Benutzer wählt einen Wert aus dem dropdown, Javascript setzt den Wert des Titel wie diese:

$("#Title").val("WO# " + workOrderID);

Den text auf dem Bildschirm angezeigt (siehe screenshots unten). Allerdings, wenn der Benutzer auf die Schaltfläche speichern, erhalten Sie eine Fehlermeldung, die der Titel kann nicht leer sein. Wenn ich in der controller für die Methode, die getroffen wird, wenn der Benutzer auf speichern klickt, ich kann sehen, dass in dem Modell, der Titel ist in der Tat null ist und dadurch verursacht wird, dass das Modell Staat ungültig zu sein. Ich fügte hinzu, Javascript, um den Wert der Titel sofort nach Einstellung es mit dem code oben und es ist null.

Habe ich versucht, verschiedene Möglichkeiten der Einstellung Titel in der javascript -; meist entlang der Linien von so etwas wie dieses:

alert($("#Title").data("kendoTextBox").value());

und es gibt einen Fehler "nicht gefunden".

So, wie ich Titel in einer Weise, dass es nicht nur auf dem Bildschirm angezeigt, aber erkannt werden durch den controller und nicht das Modell state invalid?

Hier ist das Ereignis-pop-up-Fenster beim ersten öffnen. Hinweis: der Titel ist leer, an dieser Stelle:
Wie kann ich den Wert einer Kendo-Textfeld ein und übergeben diesen Wert an die Steuerung, so dass das Modell gültig?

Nachdem ein Auftrag ausgewählt ist aus einem drop-down, wird als Titel geben Sie diesen Wert an und der Titel hat nun einen Wert auf dem Bildschirm:

$("#Title").val("WO#" + workOrderID);
Wie kann ich den Wert einer Kendo-Textfeld ein und übergeben diesen Wert an die Steuerung, so dass das Modell gültig?

Jedoch, wenn der Benutzer auf speichern klickt und der code geht an den controller, das Modell Staat ist nicht gültig und der Wert der Vorbehaltsware ist null:

Wie kann ich den Wert einer Kendo-Textfeld ein und übergeben diesen Wert an die Steuerung, so dass das Modell gültig?

Wie kann ich den Wert einer Kendo-Textfeld ein und übergeben diesen Wert an die Steuerung, so dass das Modell gültig?

Dies ist der code für den scheduler:

@(Html.Kendo().Scheduler<SchedTasksModel>()
                      .Name("scheduler")
                      .Date(DateTime.Today)
                      .StartTime(DateTime.Parse(string.Format("{0} {1}", DateTime.Today.ToShortDateString(), "07:00")))
                      .Height(600)
                      .Views(views =>
                      {
                          views.DayView();
                          views.WeekView(weekView => weekView.Selected(true));
                          views.MonthView();
                          views.AgendaView();
                      })
                      .Editable(editable => editable.TemplateName("KoorsenEditor"))
                      .Timezone("Etc/UTC")
                      .Events(e => { e.Edit("sched_edit"); })
                      .Resources(resource =>
                      {
                          resource.Add(m => m.TaskType)
                              .Title("Type")
                              .DataTextField("Text")
                              .DataValueField("Value")
                              .DataColorField("Color")
                              .BindTo(new[]
                              {
                                  new {Text = "Work Order", Value = 1, Color = "#6eb3fa"},
                                  new {Text = "Event", Value = 2, Color = "#f58a8a"}
                              });

                          resource.Add(m => m.TaskSourceId)
                              .Title("Wo")
                              .DataTextField("Name")
                              .DataValueField("Id")
                              .DataSource(ds => ds.Read(read => read.Action("GetSchedWo", "Sched", new { userID = ViewBag.CurrUser, userType = ViewBag.CurrUsrType })));

                          resource.Add(m => m.TaskSourceEvtId)
                              .Title("Evt")
                              .DataTextField("Name")
                              .DataValueField("Id")
                              .BindTo(new[]
                              {
                                  new {Name = "Meeting", Id = 1},
                                  new {Name = "Vacation", Id = 2},
                                  new {Name = "Sick Time", Id = 3},
                                  new {Name = "Other", Id = 4}
                              });
                          resource.Add(m => m.TaskResId)
                              .Title("Res")
                              .DataTextField("Name")
                              .DataValueField("Id")
                              .DataSource(ds => ds.Read(read => read.Action("GetTechRes", "Sched")));
                      })
                      .DataSource(d => d.Model(m =>
                      {
                          m.Id(f => f.TaskId);
                          m.Field(f => f.Title).DefaultValue("");
                          m.Field(f => f.TaskType).DefaultValue(1);
                          m.RecurrenceId(f => f.RecurrenceId);
                      })
                          .Events(e =>
                          {
                              e.Error("error_handler");
                              e.Sync("onSchedulerSync");
                          })
                          .Create("WrkOrdTasksCreate", "Sched")
                          .Read("WrkOrdTasksRead", "Sched")
                          .Update("WrkOrdTasksUpdate", "Sched")
                          .Destroy("WrkOrdTasksDestroy", "Sched")
                          .Filter(filters => filters.Add(model => model.TaskResId).IsNotEqualTo(0))
                      )
                      )

Editor.cshtml Definition der text-Feld -

 @(Html.TextBoxFor(model => model.Title, new {@class = "k-textbox", data_bind = "value:title"}))

Javascript-Einstellung der Wert des title-Feld

    function onWorkOrderChange(e) {
    try {
        var workOrderID = $("#TaskSourceWoId").data("kendoDropDownList").value();
        if ($("#Title").val() == "") {
            $("#Title").val("WO# " + workOrderID);
        }
    } catch (ex) {
        alert(ex);
    }
}
Ich bin gewohnt, arbeiten mit Kendo anders, also bin ich nicht sicher, ob meine Lösung hilft. Versuchen Sie @(Html.TextBoxFor(model => model.Title, new {@class = "k-textbox", data_bind = "value:title"})) zu @(Html.Kendo().TextBoxFor(model => model.Title).HtmlAttributes(new { @class = "k-textbox", data_bind = "value:title" })) und sehen, was passiert
Leider gab mir das gleiche Ergebnis. Aber danke für den Fang, die. Ich hatte nicht bemerkt, der Programmierer, der das schrieb, hat nicht mit einem Kendo-Textfeld. Ich ihn geändert, bekam aber das gleiche Ergebnis: das Modell Staat ist nicht gültig. Irgendwelche anderen Ideen?
Sind Sie sicher, dass das Modell Staat Fehler aufgetreten, aufgrund, dass die text-box? verwenden Sie diese IEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors); und Sie können überprüfen, ob der Fehler, ist etwas anderes :
Ja, es ist definitiv kam aus dem Titel und die Ressource null. (Die Validierung für den Titel kam zuerst also, was die Fehler habe geworfen, wenn ich entfernt die Validierung für ihn, ich konnte sehen, wie der Fehler wurde für die Ressource null).

InformationsquelleAutor boilers222 | 2017-08-07

Schreibe einen Kommentar