2009-03-30 8 views
2

Je lance un appel à une action du contrôleur en javascript à l'aide de la méthode getJson. Je dois passer deux paramètres à ma méthode d'action sur le contrôleur, mais j'ai du mal à le faire. Je ne comprends pas complètement les tables de routage et je ne sais pas si c'est ce que je dois utiliser pour que cela fonctionne. Veuillez voir l'exemple ci-dessous de ce que j'essaie de faire.ASP.NET MVC Transmettre plusieurs paramètres de getJson au contrôleur

var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("Premise").value + "/" + $get("SearchPostcode").value 
     $.getJSON(action, null, function(data) { 
     $("#AddressDropDown").fillSelect(data); 
    }); 

C'est ma route que je ne comprends pas comment faire usage de ...

routes.MapRoute(
       "postcode", 
       "Postcode/GetAddressResults/{premise}/{postcode}", 
       new { controller = "Motor", action = "GetAddressResults", premise = "", postcode = "" }); 

Répondre

0

Vous êtes certainement sur la bonne voie, même si je besoin de voir votre contrôleur savoir à coup sûr. Il doit ressembler à quelque chose comme ceci:

public ActionResult GetAddressResults(string premise, string postcode) 
{ 
    //Do something. 
    return Json(AddressService.GetResultsOfSomeKind(premise, postcode); 
} 

Définissez un point d'arrêt sur votre ActionResult afin que vous sachiez qu'il est appelé. Si ce n'est pas le cas, utilisez Firefox et vérifiez la console d'erreur pour les erreurs de syntaxe (le code que vous avez posté en contient).

MISE À JOUR:

Qu'est-ce que

$get("Premise").value? 

Pour obtenir la valeur d'une entrée via jQuery, utilisez:

$("#fieldid").val(); 

Je recommande d'utiliser le plugin Firebug pour Firefox. De cette façon, vous saurez exactement à quel moment votre javascript se casse. Vous constaterez que votre instruction "var action =" n'ajoute pas correctement les valeurs du champ de formulaire côté client avant que l'appel $ .getJSON n'envoie une requête à votre contrôleur.

Questions connexes