2010-11-10 22 views
1

J'ai une action JsonResult dans mon projet MVC ...MVC Render JsonResult comme littérales

public JsonResult GetData(string term) { 
    List<String> data = repo.GetData(term).ToList(); 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 

Ce pouvoir un autocomplete jquery consultation, mais comme il n'y a que 30 valeurs dans la base de données, je pense que cela est pas l'utilisation efficent des ressources de base de données ...

<script type="text/javascript"> 
    jQuery(document).ready(function ($) { 
     $("input#MyTextBox").autocomplete({ 
      source: '<%: Url.Action("GetDate","Controller") %>', 
       delay: 1, 
       minChars: 2 
      } 
     ); 
    }); 
</script> 

Je voudrais créer quelque chose simlar à cette ...

<script> 
    $(document).ready(function() { 
    $("input#MyTextBox").autocomplete({ 
    source: ["my","list","of","values"] 
}); 
    }); 
</script> 

Il me manque quelque chose ici car cela devrait être simple. Y at-il un moyen que je peux changer l'url.action à quelque chose qui rendra le JSON presque comme un PartialView?

Aussi, est-ce une bonne solution au problème ou quelqu'un peut-il me montrer un meilleur moyen?

Répondre

3

2 points:

  1. Oui, il y a un moyen de rendre plus facile JSON:

    <script type="text/javascript"> 
    jQuery(document).ready(function ($) { 
        $("input#MyTextBox").autocomplete({ 
         source: <%: Html.Raw(Json.Encode(Model.AutocompleteSourceFromDb)) %>, 
          delay: 1, 
          minChars: 2 
         } 
        ); 
    }); 
    </script> 
    
  2. Du point de vue de l'utilisation de la base de données, cela ne change rien. Vous restaurez tout le JSON sur la page de rendu et ne pas interroger la base de données sur la saisie semi-automatique.