Wartość nie chce się przesłać z widoku do kontrolera

0

Witam,

siedzę sobie cały dzień nad apką i złapałem błąd w prostym miejscu. Już widzę podwójnie, ale jak dla mnie tam nic złego się dziać nie powinno, a jednak.
W klasie AppUser mam 2 enumy - miasto i kwalifikacje, w widoku mam 2 select list itemy, problem w tym że o ile miasto przechodzi, to wartość kwalifikacji już się nie przesyła:

<form asp-action="UserProps" method="post">
    <div class="form-group">
        <label asp-for="City">Miasto</label>
        <select asp-for="City" class="form-control" asp-items="@new SelectList(Enum.GetNames(typeof(Cities)))">
            <option disabled selected value="">Wybierz miasto</option>
        </select>
    </div>
    <div class="form-group">
        <label asp-for="Qualifications">Kwalifikacje</label>
        <select asp-for="Qualifications" class="form-control" asp-items="@new SelectList(Enum.GetNames(typeof(QualificationLevels)))">
            <option disabled selected value="">Wybierz kwalifikacje</option>
        </select>
    </div>
    <button type="submit" class="btn btn-primary">Zapisz</button>
    <a asp-action="Index" class="btn btn-default">Anuluj</a>
</form>

W metodzie:

public async Task<IActionResult> UserProps([Required]Cities city, [Required]QualificationLevels qualification)

zmienna city ma wartość, a zmienna qualification już nie :|

#Edit
Żeby nie zakładać drugiego tematu, mam z ciekawości inne pytanie. Póki co wyrzuciłem te kwalifikacje i zostawiłem miasto, metoda wygląda tak:

[Authorize]
[HttpPost]
public async Task<IActionResult> UserProps([Required]Cities city)
{
    if (ModelState.IsValid)
    {
        AppUser user = await CurrentUser;
        user.City = city;
        await userManager.UpdateAsync(user);
        return RedirectToAction("Index");
    }
    return View(await CurrentUser);
}

Jeśli nie debuguje kodu jest ok, a przy debugowaniu wyrzuca mi błąd na linijcie z metodą UpdateAsync:

An unhandled exception occurred while processing the request.
SqlException: New transaction is not allowed because there are other threads running in the session.

Transakcja nie jest dozwolona ze względu na inny - chodzący w aktualnej sesji - thread.
Czemu debugowanie wpływa na poprawne wykonanie się akcji?

1

Wygląda na literówkę. W formularzu <select /> jest zdefiniowany dla 'Qualifications' a parametr metody UserProps to 'qualification'. Bez 's' na końcu. Jak psikuta ;)

0
Grzegorz Kotfis napisał(a):

Wygląda na literówkę. W formularzu <select /> jest zdefiniowany dla 'Qualifications' a parametr metody UserProps to 'qualification'. Bez 's' na końcu. Jak psikuta ;)

Kurde dzięki, już tyle siedzę dzisiaj, że nie dopatrzyłbym się.
Jeszcze jakby ktoś mógł mi odpowiedzieć na drugie pytanie byłoby pięknie.

1
pavarotti napisał(a):

Jeśli nie debuguje kodu jest ok, a przy debugowaniu wyrzuca mi błąd na linijcie z metodą UpdateAsync:

An unhandled exception occurred while processing the request.
SqlException: New transaction is not allowed because there are other threads running in the session.

Transakcja nie jest dozwolona ze względu na inny - chodzący w aktualnej sesji - thread.
Czemu debugowanie wpływa na poprawne wykonanie się akcji?

Pewnie ma to związek z asynchronicznością i tym, że pobieranie danych z bazy jeszcze się nie zakończyło (trwa odczyt) i następuje próba zapisu do bazy - założenia transakcji. Czyli jest konflikt.

1 użytkowników online, w tym zalogowanych: 0, gości: 1