2017-05-09 2 views
0

ich einen Kendo-Editor haben, die wie unten definiert ist:Speichern von Text von Kendo-Editor Datenbank

@(Html.Kendo().Editor() 
        .Name("myEditor") 
        .Tag("div") 
        .Tools(tools => tools 
          .Clear() 
          .Bold() 
          .Italic() 
          .Underline() 
          .Strikethrough() 
          .JustifyCenter().JustifyFull().JustifyLeft().JustifyRight() 
          .CreateLink().Unlink().TableEditing().FontColor().BackColor()) 
        .Value(@<text> 
           Hello Kendo Editor <some text with html tags here> 
         </text>) 
       ) 

Dann habe ich zwei Tasten, die nur für die Admins zeigen - Speichern und Bearbeiten, und sie sind definiert als unten -

<button type="button" id="btnedit">Edit</button> 
<input type="submit" name="btnSave" id="btnSave" value="Save" class="btn btn-default" /> 

Es gibt andere zwei wie unten Schaltflächen auf dem Formular -

<input type="submit" name="btnAgree" id="btnAgree" value="Agree" class="btn btn-primary" /> 
<input type="submit" name="btnDisagree" id="btnDisagree" value="Disagree" class="btn btn-default" /> 

Und fo rm behandelt das Absenden von Agree und Schaltflächen Ablehnen von der Begin mit („ActionMethod“, „Controller“, FormMethod.Post) wie unten -

@using (Html.BeginForm("Index", "MyControllerName", FormMethod.Post)) 

Jetzt mag ich, dass, wenn ein Admin-Benutzer kommt und nimmt Änderungen Um den Editor-Text und Hits "Speichern" -Taste, möchte ich den Text des Editors in der Datenbank gespeichert werden. Ich kann mit dem sparenden Teil umgehen. Ich möchte nur wissen, wie ich den Text aus dem Kendo Editor holen und den Textwert an die Aktionsmethode im Controller senden kann.

habe ich versucht, die Lösung in diesem Thread hier vorgesehen - http://www.telerik.com/forums/save-changes-to-and-print-content-of-editor-in-mvc

So, hier die Lösung unter Verwendung von I eine Aktion-Methode mit dem String-Argumente Namen ähnlich den Editor Namen wie unten hinzugefügt -

public ActionResult Save(string myEditor) { 

// TO DO: Save the text to the database 

} 

wenn ich meine Anwendung ausführen, und klicken Sie auf ‚Speichern‘ klicken, erhalte ich die folgenden Fehler -

HTTP Error 404.0 - Invalid navigation The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Es traf nicht die Methode auf ‚Speichern‘ Aktion. Wie kann ich das schaffen?

Dank

Antwort

0

Haben Sie einen AJAX Anruf, um den Inhalt von myEditor zu senden als mit?

Sie müssen das <input>type Attribut ändern, um nur button so wird es nicht als einen behandelter einreichen und einen onclick Event-Handler Haken:

<input type="button" name="btnSave" id="btnSave" value="Save" class="btn btn-default" onclick="save()" /> 

dann die zugehörigen Javascript-Funktion anschließen, die Sie wird Griff AJAX-Aufruf:

function save() { 
    var enteredText = $("#myEditor").data("kendoEditor").value(); 
    alert(editor.value()); 
    $.ajax({ 
     type: 'post', 
     dataType: 'json', 
     url: 'yourController\Save', 
     data: { "myEditor": JSON.stringify(enteredText) }, 
     success: function (response) { 
      // handle a response following database operations 
     }, 
    }); 
}); 

Und vergessen Sie nicht Ihre Controller-Methode mit der jeweiligen Anforderungsmethode (in diesem Fall POST) zu dekorieren:

[HttpPost] 
public ActionResult Save(string myEditor) { 
    // TO DO: Save the text to the database 
} 
+0

Vielen Dank @Sandman für Ihre Antwort. Ich habe versucht, den obigen Ansatz, aber ich bekomme Javascript Fehler, wenn es versucht, den Wert von Kendo Editor zu bekommen. 0x800a138f - JavaScript-Laufzeitfehler: Die Eigenschaft 'Wert' von undefinierter oder Null-Referenz konnte nicht abgerufen werden. – Kristy

+0

Stellen Sie sicher, dass Sie auf die [vorhandene Instanz] zugreifen (http://docs.telerik.com/aspnet-mvc/helpers/editor/overview#existing -instanzen) nach Ihrer MVC-Deklaration. – Sandman

Verwandte Themen