Comment publier une variable javascript sur un modèle ASP.net MVC?

J’essaie d’utiliser l’éditeur de texte enrichi Yahoo dans mon application Web. Je suis un peu novice en programmation Web, alors c’est peut-être une question idiote.

J’utilise un modèle personnalisé appelé “blogpost”. Il contient les propriétés suivantes:

Titre Body DateCreated Author

Je souhaite utiliser l’éditeur personnalisé uniquement pour la propriété “body”. Lorsque je clique sur Envoyer, les autres propriétés du modèle sont générées à partir de simples zones de texte. J’ai placé le code suivant avec mon code de formulaire de saisie.

var myEditor = new YAHOO.widget.Editor('msgpost', { height: '300px', width: '522px', dompath: true, //Turns on the bar at the bottom animate: true //Animates the opening, closing and moving of Editor windows }); myEditor.render(); YAHOO.util.Event.on('Create', 'click', function () { myEditor.saveHTML(); var body = myEditor.get('element').value; }); @ViewData.Add("Body",//how do I add the javascript variable "body" ?)

Comment “publier” la variable javascript “body” afin que le constructeur de modèle MVC la reconnaisse?

Vous ne pouvez pas faire cela dans votre vue MVC. Vous devez le faire en javascript.

Vous devez associer l’événement Submit au formulaire, puis obtenir la valeur du texte dans l’éditeur et l’append aux données de publication. Quelque chose comme:

 $('form').submit(function(event){ // cancel the default action event.preventDefault(); var body = escape(myEditor.get('element').value); var theForm = $(this); $.post(theForm.attr('action'), theForm.serialize() + '&body=' + body, function (data) { // do whatever with the result }); }); 

Une autre méthode consiste à append un champ masqué à votre formulaire et à le mettre à jour avec la valeur de l’éditeur:

  

alors, au lieu de définir la variable body , vous pouvez le faire:

 YAHOO.util.Event.on('Create', 'click', function () { myEditor.saveHTML(); $('#body').attr('value', myEditor.get('element').value); }); 

Ensuite, les données sont dans le formulaire et le formulaire gérera le rest.

Ecrivez du javascript pour enregistrer le contenu de l’éditeur dans une entrée masquée et postez-le avec le formulaire. Vous pourrez alors accéder au contenu de l’action du contrôleur MVC en utilisant editorBodyText en tant que paramètre de chaîne.

Par exemple, Javascript et HTML:

    

Contrôleur MVC:

 public ActionResult HandlePost(ssortingng editorBodyText){ //TODO: process your data here eg save to DB. }