Je suis un développeur Java, novice en .NET. Je travaille sur un projet .NET MVC2 dans lequel je veux avoir une vue partielle pour envelopper un widget. Chaque objet widget JavaScript possède un objet de données JSON qui serait alimenté par les données du modèle. Ensuite, les méthodes de mise à jour de ces données sont liées à des événements lorsque les données sont modifiées dans le widget ou si ces données sont modifiées dans un autre widget.
Le code est quelque chose comme ceci :
MyController
:
virtual public ActionResult DisplaySomeWidget(int id) {
SomeModelView returnData = someDataMapper.getbyid(1);
return View(myview, returnData);
}
myview.ascx
:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeModelView>" %>
<script type="text/javascript">
//creates base widget object;
var thisWidgetName = new Widget();
thisWidgetName.updateTable = function() {
// UpdatesData
};
$(document).ready(function () {
thisWidgetName.data = <% converttoJSON(model) %>
$(document).bind('DATA_CHANGED', thisWidgetName.updateTable());
});
</script>
<div><%:model.name%></div>
Ce que je ne sais pas, c'est comment envoyer les données en tant que SomeModelView
et ensuite être capable de l'utiliser pour remplir le widget ainsi que de le convertir en JSON. J'ai vu des moyens très simples de le faire dans le contrôleur, mais pas dans la vue. J'imagine que c'est une question basique, mais j'ai passé quelques heures à essayer de rendre cela simple.
1 votes
Je sais que c'est une vieille question. Mais à partir d'aujourd'hui, il y a de meilleures façons de le faire. Ne mélangez pas JSON en ligne avec votre résultat de vue. JSON est facilement sérialisé via AJAX et peut être traité comme des objets. Tout ce qui est en JavaScript doit être séparé de la vue. Vous pouvez facilement retourner des modèles sans aucun effort via un contrôleur.
0 votes
@PiotrKula Parfois, l'ordre d'initialisation suggère une préférence concernant l'endroit où JavaScript est inclus et assigné. Il y a toujours un niveau d'effort, mais il varie parfois en fonction de l'endroit où il est placé. Les déclarations et initialisations JavaScript en ligne sont acceptables dans une vue pour éviter les désagréments et les efforts supplémentaires.