2010-07-16 8 views
1

Je suis nouveau asp.net mvc ... & besoin d'aide pour ma question ci-dessous:Html.TextBox de remplissage sur onchange de Html.DropDownList dans asp.net mvc

Lorsque le formulaire est chargé mon dropdownlist de pays a un certain valeurs. Je souhaite que lorsque l'utilisateur sélectionne une valeur dans la liste déroulante, il doit revenir au contrôleur et appeler la base de données pour récupérer la valeur CountryCode en fonction du pays sélectionné. Comment simuler cet appel de publication?

Merci à l'avance

Deepthi

Répondre

-1

Vous devez définir AutoPostBack = "true" dans votre menu déroulant asp. Votre contrôle doit également définir votre OnSelectedIndexChanged = "SomeFunction". Cela appellera une fonction dans votre codebehind chaque fois que l'index de votre liste déroulante est modifié. Voici un exemple

<asp:DropDownList ID="dropDownID" runat="server" AutoPostBack="true" OnSelectedIndexChanged="OnDropdownIndex_Change"> </asp:DropDownList>

+1

La question concerne ASP.NET MVC et non les formulaires Web. –

1

Contrairement à WebForms classique dans ASP.NET MVC il n'y a pas de notion comme PostBack. Donc, pour commencer, vous avez besoin d'un modèle qui va représenter vos données:

public class MyViewModel 
{ 
    public string SelectedCountry { get; set; } 
    public IEnumerable<SelectListItem> Countries { get; set; } 
} 

Ensuite, vous allez avoir besoin d'un contrôleur qui définit deux actions: une pour rendre la forme et une autre manipulation de la soumission:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      // you probably would fetch those from the database 
      Countries = new SelectList(new[] 
      { 
       new { Value = "FR", Text = "France" }, 
       new { Value = "US", Text = "USA" } 
      }, "Value", "Text") 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(string selectedCountry) 
    { 
     // selectedCountry will contain the code that you could use to 
     // query your database 
     return RedirectToAction("index"); 
    } 
} 

Et enfin, vous pouvez jeter une vue fortement typé au modèle qui contiendra le balisage:

<% using (Html.BeginForm()) { %> 
    <%: Html.DropDownListFor(x => x.SelectedCountry, Model.Countries) %> 
    <input type="submit" name="OK" /> 
<% } %> 

Si rien de tout cela un sens pour vous, je vous suggère reading the getting started tutorials.

Questions connexes