NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Select object z dropdownlistu do modelu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
František Pastorek:16.11.2017 11:36

Zdravím,

načítal som list objektov z databázy a vytvoril z nich selectlist, ktorý som načítal vo view. Môžem si z neho vyberať ale celý form je post a všetko uložím už vo view do modelu. Viem uložiť aj obsah selectu z listu ale iba ako text, nie objekt.

RegisterViewModel:

public class RegisterViewModel
{
        public IEnumerable<SelectListItem> RolesList { get; set; }
        public Role UserRole { get; set; }
}

RoleViewModel:

public class Role
{
        public int Id { get; set; }
        public string RoleCode { get; set; }
        public string Name { get; set; }
        public string PhoneNumber { get; set; }
        public string Notice { get; set; }
}

Controller pre načítanie dát z db a uloženie do selectlistu:

IEnumerable<Role> dbRoles = from d in _context.Roles orderby d.Name select d;
var model = new RegisterViewModel
{
        RolesList = new SelectList(dbRoles, "Id", "Name", null)
};

return View(model);

Zobrazenie selectlistu vo View:

<label asp-for="UserRole"></label>
<select asp-for="UserRole" class="form-control">
        @foreach (var item in Model.RolesList)
        {
                <option value="@item">@Html.DisplayFor(modelItem => item.Text)</option>
        }
</select>

Vopred ďakujem za akúkoľvek odpoveď.

Editováno 16.11.2017 11:39
 
Odpovědět
16.11.2017 11:36
Avatar
Nahoru Odpovědět
16.11.2017 12:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
František Pastorek:16.11.2017 12:12

Riešim to už od včera a práve som na to prišiel. Otázka bola, že ako viem do UserRole pri selectliste vložiť vybraný item z RoleListu ako object. Urobil som to tak, že do UserRole som uložil Id vybraného objektu a potom v controlleri som z db findol rolu podla id a priradil do UserRole. V db ma user uz uspesne zapisane id role.

Problém ale teraz je, že ked findnem usera podla id: var user = await _userManager.Fin­dByIdAsync(id)
tak v nom je UserRole == 0. Pre usera mam definovany FK ako: public Role UserRole { get; set; }
co je uspesne znazornene aj v db. Ale ked to mam definovane ako typ Role a v db je to ako integer pre id z danej tabulky tak som myslel ze si to automaticky vie pri nacitani usera previes id do Roly a to nacitat. Mozno vie ale neviem to spravit. Pretoze entity framework pochopil ze ked je UserRole typu Role tak je to FK a teda UserRole premenoval v db na UserRoleId zrejme podla nejakeho patternu. Lenze ja viem pristupit len k UserRole co je ale po nacitani null napriek tomu ze v db je id roly.

Docela tomu nerozumiem :D

 
Nahoru Odpovědět
16.11.2017 12:12
Avatar
Odpovídá na František Pastorek
František Pastorek:16.11.2017 12:17

*Problém ale teraz je, že ked findnem usera podla id: var user = await _userManager.Fin­dByIdAsync(id)
tak v nom je UserRole == null.

preklep, sry

 
Nahoru Odpovědět
16.11.2017 12:17
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 4 zpráv z 4.