2013-02-20 2 views
1

Je veux lier des données pour le marquer avec ViewBag et, malheureusement, cela ne fonctionne pas.Jquery TagIt problème en utilisant ViewBag comme plugin de source de données

Donc, voici mon contrôleur:

public ActionResult ArticleEdit(Guid id) 
    { 
     ViewBag.Tags = db.Tags.Select(tag => tag.Name).ToList(); 

     Article article = db.Articles.Single(a => a.ArticleID == id); 
     return View(article); 
    } 

Et moi:

<div class="tags"> 
     <label for="tags"> 
      Tags</label> 
     <ul id="mytags"> 
     </ul> 
    </div> 

Javascript:

$(document).ready(function() { 
    $("#mytags").tagit({ 
     availableTags: @Html.Raw(Json.Encode(@ViewBag.Tags)) 
    }); 
}); 

Il rend aussi:

$(document).ready(function() { 
    $("#mytags").tagit({ 
    availableTags: ["boool! ","asd ","asdasdasd "] 
    }); 
}); 

Si j'utilise availableTags: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"]

cela fonctionne parfaitement bien.

J'ai essayé le plugin jquery auto complete avec ViewBag et cela fonctionne. Voici le code pour elle:

<div class="ui-widget"> 
    <label for="tags"> 
     Tags: 
    </label> 
    <input id="tags" /> 
</div> 

$(function() { 
    var availableTags = @Html.Raw(Json.Encode(@ViewBag.Tags)); 
    $("#tags").autocomplete({ 
    source: availableTags 
    }); 
}); 

Toutes les idées que peut-il être? J'utilise MVC3 avec Razor. Et quand je availableTags avec ViewBag, le champ de saisie disparaît tout simplement.

+0

Pouvez-vous vérifier deux fois rendu HTML, car cela devrait fonctionner: http://jsfiddle.net/XT6Aj /. Avez-vous vérifié dans votre navigateur JS console y at-il des erreurs? – nemesv

+0

J'ai vérifié deux fois, ça s'est bien passé. J'ai seulement 'la compilation conditionnelle est éteinte' dans le studio visuel. de toute façon cela fonctionne maintenant, merci pour l'attention à mon problème) – makambi

+0

Salut @makambi. Pas besoin de marquer le titre comme [fixe] - il suffit de cocher votre réponse ':)'. – halfer

Répondre

0

Hm, j'ai changé

$(document).ready(function() { 
    $("#mytags").tagit({ 
     availableTags: @Html.Raw(Json.Encode(@ViewBag.Tags)) 
    }); 
}); 

à

var myTags = @Html.Raw(Json.Encode(@ViewBag.Tags)); 

    $(document).ready(function() { 
     $("#mytags").tagit({ 
      availableTags: myTags 
     }); 
    }); 

et il fonctionne maintenant

Questions connexes