Diskuze: MVC 5, RadioButton

C# .NET .NET (C# a Visual Basic) MVC 5, RadioButton American English version English version

Avatar
beats.omni
Člen
Avatar
beats.omni:

Ahoj, trochu si nevím rady s RadioButtony v MVC. Například mám na stránce písmena A - Z. Ty mi slouží ke zobrazení kontaktů, jejichž příjmení začíná na dané písmeno. Teď bych chtěl to samé, ale pro jméno. A volba, zda se bude třídit podle jména nebo příjmení by měla jít nastavit za pomoci RadioButtonu.

Strávil jsem s tím už nějakou tu hodinu a pořád mi to nechce fungovat.

Díky za rady.

 
Odpovědět 3.6.2015 8:08
Avatar
JMS
Člen
Avatar
Odpovídá na beats.omni
JMS:

Těžko ti teď někdo řekne, proč ti to nefunguje, dej sem kus kódu. :-)

 
Nahoru Odpovědět 3.6.2015 13:14
Avatar
beats.omni
Člen
Avatar
Odpovídá na JMS
beats.omni:

Když kliknu na stránce na A - Z, tak se mi setřídí data podle příjmení, které začíná na dané písmeno. Teď bych tam chtěl přidat RadioButton, který uživateli umožní aby si mohl zvolit, zda se bude třídit podle jména nebo příjmení. Takže vyberu radioButton jméno, kliknu na a a zobrazí mi to jména začínající na A. Vyberu radiobutton příjmení, kliknu na A a zobrazí se mi příjmení začínající na A. Samotné zobrazování A - Z mi funguje, jen nevím, jak předat data z radiobuttonu do controlleru a následně to odeslat se zvoleným písmenem.

View:

@using (Html.BeginForm())
{
    <div class="form-inline">
        <div class="form-group">
            <div class="form-horizontal">
                @Html.ActionLink("ALL", "Index", new { sortLetter = "" }) |
                @Html.ActionLink("A", "Index", new { sortLetter = "A" }) -
                @Html.ActionLink("B", "Index", new { sortLetter = "B" }) -
                @Html.ActionLink("C", "Index", new { sortLetter = "C" }) -
                @Html.ActionLink("D", "Index", new { sortLetter = "D" }) -
                @Html.ActionLink("E", "Index", new { sortLetter = "E" }) -
                @Html.ActionLink("F", "Index", new { sortLetter = "F" }) -
                @Html.ActionLink("G", "Index", new { sortLetter = "G" }) -
                @Html.ActionLink("H", "Index", new { sortLetter = "H" }) -
                @Html.ActionLink("I", "Index", new { sortLetter = "I" }) -
                @Html.ActionLink("J", "Index", new { sortLetter = "J" }) -
                @Html.ActionLink("K", "Index", new { sortLetter = "K" }) -
                @Html.ActionLink("L", "Index", new { sortLetter = "L" }) -
                @Html.ActionLink("M", "Index", new { sortLetter = "M" }) -
                @Html.ActionLink("N", "Index", new { sortLetter = "N" }) -
                @Html.ActionLink("O", "Index", new { sortLetter = "O" }) -
                @Html.ActionLink("P", "Index", new { sortLetter = "P" }) -
                @Html.ActionLink("Q", "Index", new { sortLetter = "Q" }) -
                @Html.ActionLink("R", "Index", new { sortLetter = "R" }) -
                @Html.ActionLink("S", "Index", new { sortLetter = "S" }) -
                @Html.ActionLink("T", "Index", new { sortLetter = "T" }) -
                @Html.ActionLink("U", "Index", new { sortLetter = "U" }) -
                @Html.ActionLink("V", "Index", new { sortLetter = "V" }) -
                @Html.ActionLink("W", "Index", new { sortLetter = "W" }) -
                @Html.ActionLink("X", "Index", new { sortLetter = "X" }) -
                @Html.ActionLink("Y", "Index", new { sortLetter = "Y" }) -
                @Html.ActionLink("Z", "Index", new { sortLetter = "Z" })
            </div>
        </div>
    </div>
}

HomeController:

private UsersContext db = new UsersContext();

public ActionResult Index(string sortLetter)
        {
            var users = from u in db.Users
                           select u;
             // Třídění A - Z
             users = users.Where(o => o.LastName.ToUpper().StartsWith(sortLetter.ToString()));


            return View(users.ToList());
        }
Editováno 6.6.2015 16:28
 
Nahoru Odpovědět 6.6.2015 16:28
Avatar
Odpovídá na beats.omni
Michal Štěpánek:

Asi bych to zkusil nějak "oifovat". Klikneš na písmeno, provede se kontrola, který radiobutton je "selected" a podle toho by byl filtr pro výběr ze sloupce jména nebo příjmení...

users1 = users.Where(o => o.LastName.ToUpper().StartsWith(sortLetter.ToString()));
users2 = users.Where(o => o.FirstName.ToUpper().StartsWith(sortLetter.ToString()));
if (radiobutton1.selected = true)
users = users1;
else
users = users2;

nebo něco podobného. S radiobuttonama v podstatě nedělám, takže si nepamatuju, které vlastnosti se tam dají použít...

Editováno 6.6.2015 19:18
Nahoru Odpovědět 6.6.2015 19:14
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
beats.omni
Člen
Avatar
Odpovídá na Michal Štěpánek
beats.omni:

To je právě ten problém, že netuším, jak vytvořit radiobutton ve View tak, abych mohl ověřit jeho stav true/false.

Případně, jakou jinou kontrolkou byste to řešili?

Editováno 7.6.2015 10:41
 
Nahoru Odpovědět 7.6.2015 10:40
Avatar
beats.omni
Člen
Avatar
Odpovídá na Michal Štěpánek
beats.omni:

Nebo třeba kdybych chtěl místo radiobuttonu použít dropdownlist. Ze zdejších tutoriálů vím, jak předat data do modelu, ale vůbec netuším, jak je přímo z view předat do controlleru.

 
Nahoru Odpovědět 7.6.2015 11:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.