2009-12-23 5 views
0

Salutations, Je voudrais préparer un bon "machine" pour appeler les méthodes asp.net mvc de jquery. Le concept est le suivant:ASP.NET MVC JQuery - algoritme flexible pour l'appel des méthodes mvc asp.net

Le concept consiste à avoir une méthode unique que chaque requête appelle. En utilisant le modèle de visiteur, je serai en mesure de déterminer quel genre d'opération je devrais faire.

public interface IRequestVisitor 
{ 
    void VisitRequest_GetPersons(CRequest_GetPersons request); 
    void VisitRequest_RemovePerson(CRequest_RemovePerson request); 
} 

Création d'une demande abstraite:

public abstract class CRequest 
{ 
    public abstract void AcceptVisitor(IRequestVisitor visitor); 
} 

et la mise en œuvre de la demande concrète:

public class CRequest_GetPersons: CRequest 
{ 
    public CRequest_GetPersons(Guid schoolROWGUID) 
    { 
     SchoolROWGUID = schoolROWGUID; 
    } 
    public Guid SchoolROWGUID={get;private set;} 

    public override void AcceptVisitor(IRequestVisitor visitor) 
    { 
     visitor.VisitRequest_GetPersons(this); 
    } 
} 

Et Implémentation du visiteur:

public void CRequestVisitor : IRequestVisitor 
{ 
    public CResponse ResponseResult {get;private set;} 

    public void IRequestVisitor.VisitRequest_GetPersons(CRequest_GetPersons request) 
    { 
     //code responsible for getting persons 
     Result = new CResponse_GetPersons_Success(List<Person>) 
    } 
    public void VisitRequest_RemovePerson(CRequest_RemovePerson request) 
    { 
     //code responsible for removing person 
     Result = new CResponse_RemovePerson_Success(); 
    } 
} 

L'action chaque js les méthodes seront exe mignon est la suivante:

public ActionResult AjaxRequest(CRequest request) 
{ 
    CRequestVisitor visitor = new CRequestVisitor(); 
    request.AcceptVisitor(visitor); 
    return JSON(visitor.Result);//return some result 

} 

J'ai aussi trouvé comment les méthodes asp.net mvc peut être appelé en utilisant jquery

<script type="text/javascript"> 
    $(document).ready(function() {   
    $("#GetPerson").click(function() {   
     $.getJSON("/Test/Request", 
     function(data){ 
      //what should be here to display all persons ? 
     //how can i pass guid of school? 
      }); 
     }); 

     }); 
    });  

</script> 

Je voudrais savoir comment puis-je passer le rowguid de l'école sélectionnée. Et comment puis-je accéder à la liste des personnes renvoyées en tant qu'objet JSON?

Répondre

0

Vous pouvez transmettre des paramètres, qui seront transmis aux paramètres de la méthode d'action, en l'ajoutant à l'URL:

/Test/Demande d'école = 1

Remplacer 1 avec le guid, et le guid sera repassé.

+0

ok..et comment passer par exemple l'objet entier (par exemple de type Personne) –

+0

en outre je ne peux pas passer juste guid. L'argument attendu est de type CRequest. Des idées? –

+1

Vous ne pouvez pas passer un objet entier dans une opération get; vous devrez utiliser un Html.BeginForm pour publier les données d'un objet sur le serveur. Dans les deux approches, vous ne pouvez pas passer d'objets, vous ne pouvez transmettre que la valeur de chaque propriété de l'objet. Vous pouvez donc afficher toutes les valeurs de propriétés dans des éléments HTML et les publier sur le serveur, puis recharger l'objet (ou actualiser l'objet si tout ce dont vous avez besoin est l'affichage uniquement). Vous ne pouvez donc pas transmettre une personne, mais son nom, son adresse et toutes les autres propriétés de la personne. –