15 messaggi dal 18 gennaio 2017
Salve ragazzi, sto lavorando a un progetto con mvc 5, immaginate un form dove ci sono le dropdownlist per regione provincia comune, quale il modo migliore per riempirli a cascata?ho provato con la funzione apposita @html.cascadedropdownlist ma per qualche motivo non riesco a passare l id di regione al controller che effettua la query per le province,qialcuno puo aiutarmi?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao e benvenuto nel forum!


ho provato con la funzione apposita @html.cascadedropdownlist

Potrebbe andar bene ma non conosco questo Html helper. Quale pacchetto NuGet hai installato per averlo?
Posta anche il codice che hai usato, potrebbe esserci un semplice errore nell'uso dell'helper.

ciao,
Moreno

Enjoy learning and just keep making
15 messaggi dal 18 gennaio 2017
@using Mvc.CascadeDropDown

//First simple dropdown 
@Html.DropDownListFor(m=>m.SelectedCountry, Model.Countries,
"Please select a Country", new {@class="form-control"})

//Dropdown list for SelectedCity property that depends on selection of SelectedCountry property
@Html.CascadingDropDownListFor( 
      expression: m => m.SelectedCity, 
      triggeredByProperty: m => m.SelectedCountry,  //Parent property that trigers dropdown data loading
      url: Url.Action("GetCities", "Home"),  //Url of action that returns dropdown data
      actionParam: "country",   //Parameter name for the selected parent value that url action receives
      optionLabel: "Please select a City", // Option label
      disabledWhenParrentNotSelected: true, //If true, disables dropdown until parrent dropdown selected
      htmlAttributes: new { @class = "form-control" }) //Html attributes

//Dropdown list for SelectedStreet property that depends on selection of SelectedCity property
@Html.CascadingDropDownListFor(m => m.SelectedStreet, m => m.SelectedCity, 
Url.Action("GetStreets", "Home"), "city", "Please select a Street", true, new { @class = "form-control" })



L esempio sta sul link https://github.com/alexanderar/Mvc.CascadeDropDown

Il pacchetto scaricato è https://www.nuget.org/packages/Mvc.CascadeDropDown/

Sembra fatto molto bene,e sembra funzionare, c'è solo un particolare, non riesco a mandare il valore al controller, ad esempio l'id della regione dovrei mandarlo al controller che poi fa la query per le province.
Ho provato ha settare alla funzione un id statico e dopo aver fatto la query effettivamente riempie la lista, sempre dopo aver selezionato qualcosa sulla prima anche se in questo caso non corrisponde,però il sistema comunica tutto, c'è solo questo problema.
Quell actionParam non è molto chiaro.
Grazie per l'aiuto.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
ho scaricato l'intero contenuto del repository GitHub e sto vedendo che l'esempio funziona. Dovresti partire anche tu da quello e poi modificarlo secondo le tue esigenze.
Quando seleziono una nazione (es "US"), dagli strumenti di sviluppo del browser (tasto F12) vedo partire correttamente una richiesta ajax verso /Home/GetCities?Country=US.

L'"id", che qui vale "US", quindi viene correttamente passato al controller. Nel tuo caso, se hai ID numerici, intervieni ovunque vengano restituite liste di ListItem. Ad esempio, questa qui di seguito è una parta contenuto dell'action GetCities dell'HomeController.
public ActionResult GetCities(string country)
        {
            if (country == "US")
            {
                var cities = new List<SelectListItem>
                {
                    new SelectListItem {Text = "New York", Value = "New York"},
                    new SelectListItem {Text = "Los Angeles", Value = "Los Angeles"},
                    new SelectListItem {Text = "Boston", Value = "Boston"},
                    new SelectListItem {Text = "Boston Disabled", Value = "Boston Disabled", Disabled = true}
                };
                return Json(cities, JsonRequestBehavior.AllowGet);


Nota come il parametro country (che viene passato via querystring) sia il parametro dell'action. E importante che il nome "country" sia lo stesso usato nell'url (è case insensitive).

Tu dovresti modificare le proprietà "Value" valorizzandole con ID numerici. Ovviamente la tua lista di regioni, provincie e città arriverà dal database e non sarà cablata nel codice come in questo esempio.

ciao,
Moreno

Enjoy learning and just keep making
15 messaggi dal 18 gennaio 2017
grazie mille sei stato molto di aiuto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.