Nie prawidłowy typ danych.

0

Witam.

Pół dania przesiedziałem nad rozwiązaniem problemu.
Błąd:
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Allepliki.Models.pliki]', but this dictionary requires a model item of type 'Allepliki.Models.uzytkownicy'.

 
 public ActionResult YourFiles()
        {
            string Login =  (string)Session["LoginUserLogin"];
            var pliki = db.pliki.Where(p => p.login == Login);
         
            return View(pliki.ToList());
            
        }

@model IEnumerable<Allepliki.Models.pliki>

@{
    ViewBag.Title = "Index";

}

@if (Session["LoginUserID"] != null)
{

    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.autor)
            </th>
            <th></th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.autor)
                </td>
            </tr>
        }

    </table>

}



Badając kod debugerem zauważyłem ze jak w pliku logowanie.chtml nie ma.

 
@model Allepliki.Models.uzytkownicy

 @using(Html.BeginForm("Index", "Home", FormMethod.Post))
                {
                    @Html.AntiForgeryToken();
                    @Html.ValidationSummary(true);
                @Html.TextBoxFor(a => a.login)
                @Html.TextBoxFor(a => a.haslo)
                <input type="submit" value="Login" />
                }

to wszytsko działa poprawnie.

0

Zgaduję, że skoro przekazujesz do modelu IEnumerable<...>, to nie możesz potem zrobić @model Allepliki.Models.uzytkownicy z racji niezgodności typów.

0

Kod kontrolera


  public ActionResult Index(uzytkownicy u)
        {
            if (ModelState.IsValid)
            {
                string haslo = Hash(u.haslo);
                var v = db.urzytkownicy.Where(a => a.login.Equals(u.login) && a.haslo.Equals(haslo)).FirstOrDefault();
                if (v != null)
                {
                    ViewBag.Message = "";
                    Session["LoginUserID"] = v.id_uzytkownika.ToString();
                    Session["LoginUserLogin"] = v.login.ToString();
                    return RedirectToAction("AfrerLogin");
                }
                else return RedirectToAction("Login");

            }
            
            return View(u);
        }

 

dla:

 Badając kod debugerem zauważyłem ze jak w pliku logowanie.chtml nie ma.

 
@model Allepliki.Models.uzytkownicy
 
 @using(Html.BeginForm("Index", "Home", FormMethod.Post))
                {
                    @Html.AntiForgeryToken();
                    @Html.ValidationSummary(true);
                @Html.TextBoxFor(a => a.login)
                @Html.TextBoxFor(a => a.haslo)
                <input type="submit" value="Login" />
                }
0

Ja chyba czegos tu nie rozumiem... u**rz**ytkownicy to kolekcja, a uzytkownicy to pojedynczy obiekt??

0

Znalazłem rozwiązanie przypadkiem.
Podaje:
Niestety nie powiedziałem wam wszystkiego o kodzie bo jako początkujący asp.net uznałem to za mało istotne. Jednak jest to bardzo istotne.
Kod:

 

@model Allepliki.Models.uzytkownicy
 
 @using(Html.BeginForm("Index", "Home", FormMethod.Post))
                {
                    @Html.AntiForgeryToken();
                    @Html.ValidationSummary(true);
                @Html.TextBoxFor(a => a.login)
                @Html.TextBoxFor(a => a.haslo)
                <input type="submit" value="Login" />
                }

jest to:

   @Html.Partial("_Menu", new Allepliki.Models.uzytkownicy() ) 

i bez przekazania modelu są błędy:

  • new Allepliki.Models.uzytkownicy() **

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