93 messaggi dal 11 agosto 2008
Buongiorno a tutti.
È da ore che cerco una soluzione a questo problemino:
In una view ho 3 DropDownList che producono il submit al cambiamento. Eccole
@using (Html.BeginForm("Index", "Ideo", FormMethod.Get))
{
    <div class="ibox-title">
        <h1>Ideogrammi e significati</h1>
    </div>

    <div class="ibox-heading">
        <div class="col-lg-3">
            <h2>Pinyin
            @Html.DropDownList("NoAccentPinyinSelected", Model.NoAccentPinyins, "---", new { onchange = "this.form.submit();" })</h2>
        </div>
        <div class="col-lg-3">
            <h2>Pinyin cinese
            @Html.DropDownList("PinyinSelected", Model.Pinyins, "---", new { onchange = "this.form.submit();" })</h2>
        </div>
        <div class="col-lg-3">
            <h2>Pinyin cinese
            @Html.DropDownList("IdeogramSelected", Model.Ideograms, "---", new { onchange = "this.form.submit();" })</h2>
        </div>
    </div>
}

Nel controller ho bisogno di sapere quale delle tre è stata scelta.
E mi piacerebbe molto capire come poter resettare la selezione.
Qualcuno ha una soluzione?

Grazie mille e buona giornata a tutti.
Andrea
Modificato da Andufer il 18 febbraio 2017 08.28 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Andrea, buongiorno.

Quando selezioni una delle tre dropwdownlist, vedrai l'url cambiare perché hai impostato il form con il metodo GET. Ciasuna dropdownlist verrà raprresentata con una chiave querystring.
Ipotizziamo che tu abbia sezionato un valore solo dalla prima dropdownlist. L'url della pagina diventerà più o meno così:
/Ideo?NoAccentPinyinSelected=Si&PinyinSelected=&IdeomgramSelected=

Come vedi, solo NoAccentPinyinSelected ha assunto un valore "Si" (o qualsiasi altra voce tu abbia scelto dalla dropdownlist).

Lato server, puoi ricevere i tre valori aggiungendo dei parametri nella action. Devi determinare quale dropdownlist è stata selezionata in base al loro valore. NoAccentPinyinSelected avrà valore "Si".
public ActionResult Index(string NoAccentPinyinSelected, string PinyinSelected, string IdeogramSelected) {
   if (NoAccentPinyinSelected == "Si") {
     //Fai qualcosa
   }
if (PinyinSelected == "Si") {
     //Fai qualcosa
   }
if (IdeogramSelected == "Si") {
     //Fai qualcosa
   }
}

Per resettarle, ti basta reindrizzare ad /Ideo, ovvero ad un url che non contenga le chiavi querystring.


Nel controller ho bisogno di sapere quale delle tre è stata scelta.

Non ho ben capito se le tre dropdownlist sono mutualmente esclusive. In questo caso dovresti usare una sola dropdownlist con 3 voci, oppure delle radio button.

Se non sono mutualmente esclusive ma si possono selezionare/deselezionare tutte e e tre, allora forse sono più indicate delle checkbox.

ciao,
Moreno

Enjoy learning and just keep making
93 messaggi dal 11 agosto 2008
Grazie Moreno,
ma è una strada che ho già provato a seguire.
NoAccentPinyinSelected, PinyinSelected e IdeogramSelected assumono il valore scelto nella lista e se io seleziono prima un valore nella prima lista e poi un valore nella seconda, mi trovo sia NoAccentPinyinSelected che PinyinSelected con un valore e non riesco a capire qual'è stato l'ultimo a essere stato selezionato.
Qualche via per capire chi è stato l'ultimo selezionato la sai?

Grazie e buona giornata.
Andrea
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Andrea,
puoi aggiungere al tuo form un campo hidden come il seguente:

<input type="hidden" name="ultima" value="" />


E lo valorizzi con il nome della dropdownlist facendo questo cambiamento all'onchange delle tre liste
@Html.DropDownList("NoAccentPinyinSelected", Model.NoAccentPinyins, "---", new { onchange = "this.form.ultima.value=this.name;this.form.submit();" })</h2>


Lato server, aggiungi un ulteriore parametro all'action chiamato ultima che ti verrà valorizzato con il nome dell'ultima dropdownlist selezionata.

ciao,
Moreno
Modificato da BrightSoul il 18 febbraio 2017 13.08 -

Enjoy learning and just keep making
93 messaggi dal 11 agosto 2008
Grazie mille. Mi sembra proprio un'ottima idea.
Poi provo a implementarla.
Buon fine settimana.
Andrea
93 messaggi dal 11 agosto 2008
L'ho appena implementato e funziona perfettamente.
Grazie ancora Moreno.
Andrea

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.