2011-01-16 1 views
1

première fois en utilisant Asp.Net MVC ici.
J'ai une classe de modèle définie avec 3 propriétés et je voudrais accéder à ce modèle à partir du code javascript sur la vue.Ecrivez le modèle en tant qu'objet disponible en Javascript

Le meilleur que j'ai trouvé this page Il me permettrait de faire quelque chose comme ceci:

<script> 
var model = <%= Model.ToJson() %> 
alert(model.Prop1); 
</script> 

Puisque ce code est basé sur un article de 2007, je me demandais s'il y a une meilleure façon de faire .

Merci!

+0

je aimerais suspecter que, si Si quelque chose n'allait pas dans cette approche, vous auriez trouvé beaucoup d'alternatives. Je pense que la réalité est que la plupart des gens ne trouvent pas la nécessité de pousser le modèle entier vers le client javascript, je ne suis pas sûr que je peux penser à une raison pour laquelle je voudrais faire cela pour être honnête. Ce qui conduit votre enquête ici, il serait intéressant d'apprendre votre objectif. – Lazarus

+0

Les données de ma page seront mises à jour régulièrement avec ajax avec des requêtes chronométrées de JSON, mais j'ai pensé que je pourrais rendre les données initiales avec Javascript en ayant le JSON en var sur la page directement, de cette façon il n'aura pas besoin Attendez un rappel AJAX pour commencer à remplir la page. – pauloya

Répondre

2

Oui, c'est un très bon moyen d'y parvenir. Il utilise JavaScriptSerializer pour sérialiser votre modèle dans un objet JSON et garantir un échappement correct.

Comme alternative si vous utilisez AJAX peut directement avoir une action du contrôleur retour JSON:

public ActionResult Foo() 
{ 
    var model = FetchTheModel(); 
    return Json(model, JsonRequestBehavior.AllowGet); 
} 

puis en utilisant jquery consomment cette action:

$.getJSON('<%= Html.Action("Foo") %>', function(result) { 
    alert(result.Prop1); 
}); 
+1

Une raison pour la downvote? S'il vous plaît laissez un commentaire lors de la downvotation. –

+0

Je n'ai pas downvote, mais un certain JavascriptSerializer est détruit, et vous devriez utiliser DataContractSerializer à la place ... Je ne suis pas un C# gourou tho –

+0

@Martin, JavaScriptSerializer n'est pas obsolète. Je ne sais pas où vous l'avez lu. Le framework ASP.NET MVC 3 vient de l'utiliser pour générer du JSON. En fait, il était temporairement obsolète dans .NET 3.5 et non retourné dans .NET 3.5 SP1. C'est l'usage est parfaitement bien. –

Questions connexes