2010-12-14 23 views
0

J'ai une liste d'objets enfants. Je voudrais être en mesure de basculer s'ils sont inclus dans une plus petite liste d'objets qui ont une relation à un objet parent. Comme si:Utilisation de Json et AjaxLink pour basculer les valeurs de lien dans ASP.NET MVC 2

<% foreach(var child in Model.AllPossibleChildren)%> 
<% { %> 
<tr> 
    <td> 
     <%if(child.Link.Any(r => r.Id == Model.Parent.Id)) 
      { %> 
      <%:Ajax.ActionLink("Remove", "RemoveChild", new { aId = Model.Parent.Id, rId = child.Id }, null)%> 
     <% } 
      else 
     { %> 
      <%:Ajax.ActionLink("Add", "AddChild", new { aId = Model.Parent.Id, rId = child.Id }, null)%> 
     <% } %> 
    </td> 
</tr> 
<% } %> 

L'idée ici est que lorsque l'utilisateur clique sur « Supprimer », il supprime la relation entre le parent et l'enfant, puis en quelque sorte (en utilisant Jquery ou AjaxOptions) basculer les paramètres de ActionLink pour correspondre l'autre condition (Ajouter au lieu de Supprimer pour le texte du lien, AddChild au lieu de RemoveChild pour la méthode d'action). C'est la partie sur laquelle je ne suis pas clair. Est-ce que j'approche cela correctement ou y a-t-il un meilleur moyen de le faire?

  • Si cette est la bonne approche, ce qui serait préférable d'utiliser - AjaxOptions ou JQuery (Je devine que la réponse est JQuery, car il est plus flexible)
  • En fonction de la réponse à # 2, comment Je fais ça? Par ailleurs, voici ma méthode d'action. J'ai testé qu'ils sont appelés correctement et transmettre les paramètres corrects.

    public JsonResult AddChild(string aId, int rId) 
        { 
         //Create Relationship 
         return Json(result); 
        } 
    
        public JsonResult RemoveChild(string aID, int rID) 
        { 
         //Remove Relationship 
         return Json(result); 
        } 
    

    Merci! J'ai cherché à utiliser des vues partielles pour cela, mais je n'arrive pas à l'obtenir non plus. Je reviens toujours à ce modèle et je n'arrive toujours pas à comprendre comment le faire fonctionner! Je ne veux pas avoir à rediffuser toute la page, même si avec la façon dont je l'ai configuré maintenant, cela fonctionnerait. C'est peut-être mon problème? Toujours à la recherche d'aide!

  • Répondre