2012-09-22 5 views
1

C'est la première fois que j'écris sur ce forum. Je suis un étudiant italien, excusez-moi pour mon mauvais anglais. Depuis longtemps, j'ai développé mon application web avec ASP.NET Web Forms; maintenant voudrais migrer vers ASP.NET MVC framework. Je voudrais donc poser des questions sur deux questions:ASP.NET MVC 3 et AJAX

  1. SCENARIO 1: J'ai deux DropDownList (éléments) sous une forme en vue. Première DropDownList contient une liste de catégorie: je voudrais que lors de la modification de l'élément dans le premier DropDownList le second est le chargement d'une liste de sous-catégories automatiquement. Dans les formulaires Web, j'ai souvent utilisé UpdatePanel pour ce travail. Mais maintenant dans MVC je ne peux pas l'utiliser. J'ai essayé d'utiliser jQuery AJAX mais le code ne fonctionne pas. Comment puis-je mettre en œuvre ce travail? Un exemple s'il vous plaît?

  2. SCÉNARIO 2: J'ai un assistant étape par étape. Donc, j'ai besoin de transmettre (mémoriser) les données, étape par étape. Où puis-je mémoriser ces données? En session? Un conseil?

Merci beaucoup, Francesco.

+0

Qu'avez-vous essayé? Vous dites que votre code ne fonctionne pas, alors montrez-nous votre code pour voir ce qui ne fonctionne pas. –

Répondre

3

1) Vous pouvez utiliser jQuery ajax pour obtenir les éléments de votre deuxième liste déroulante lorsque l'utilisateur sélectionne le premier.

En supposant que votre classe Catégorie ressemble à ce

public class Category 
{ 
    public ID { set;get;} 
    public string Name { set;get;} 
} 

et dropdowns dans la vue sont comme ça

@Html.DropDownListFor(x => x.SelectedCategoryID, 
        new SelectList(Model.Categories, "ID", "Name"), "Select") 

@Html.DropDownListFor(x => x.SelectedSubCategoryID, 
        new SelectList(Model.SubCategories, "ID", "Name"), "Select") 

maintenant avoir un javascript pour écouter l'événement de changement de premier menu déroulant et obtenir la valeur , effectuez un appel ajax à la méthode d'action qui accepte l'identifiant de catégorie et renvoyez une liste de sous-catégories au format JSON.

<script type="text/javascript"> 
    $(function() { 
     $("#SelectedCategoryID").change(function() { 
      var self = $(this); 
      var items=""; 
      $.getJSON("@Url.Action("Index", "GetSubCategories")?id="+self.val(), 
                    function(data){ 
       $.each(data,function(index,item){ 
        items+="<option value='"+item.ID+"'>"+item.Name+"</option>"; 
       }); 
       $("#SelectedSubCategoryID").html(items); 
      }); 
     }); 
    }); 
</script> 

Maintenant, vous devriez avoir une méthode d'action GetSubCategories qui renvoie la liste des (sous) catégories dans JSON Format

public ActionResult GetSubCategories(int id) 
{ 
    List<Category> subCategoryList=new List<Category>(); 
    //to do : fill the list of (sub) categories to the 
    // above list for the category id passed to this method. 
    return Json(subCategoryList,Json.RequestBehaviour.AllowGet); 
} 

2) Session devrait être bon.

+0

Merci, **: -) ** – fpellegrino