Получить данные из списка и отобразить в представлении - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю маленький ASP.NET CORE MVC, который выбирает пользователя из ActiveDirectory. Теперь мне нужно отобразить эти данные в View, но я не знаю как.

 public string VratiKorisnike()
        {
            List<Korisnik> lstuser = new List<Korisnik>();
            string sDomainName = "stesthu";
            string DomainPath = "LDAP://" + sDomainName;

            DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE");
            DirectorySearcher dssearch = new DirectorySearcher("LDAP://" + rootDSE);
            dssearch.Filter = "(&(objectClass=user)(objectCategory=person))";
            dssearch.PropertiesToLoad.Add("Ime");
            dssearch.PropertiesToLoad.Add("Prezime");
            dssearch.PropertiesToLoad.Add("LoginName");
            dssearch.PropertiesToLoad.Add("Status");
            dssearch.PropertiesToLoad.Add("AccountExpired");
            dssearch.PropertiesToLoad.Add("PassNevExp");
            dssearch.PropertiesToLoad.Add("DomenskaGrupa");
            dssearch.PropertiesToLoad.Add("Email");

            DataTable dt = new DataTable();
            dt.Columns.Add("Ime");
            dt.Columns.Add("Prezime");
            dt.Columns.Add("LoginName");
            dt.Columns.Add("Status");
            dt.Columns.Add("AccountExpired");
            dt.Columns.Add("PassNevExp");
            dt.Columns.Add("DomenskaGrupa");
            dt.Columns.Add("Email");

            SearchResult sresult = dssearch.FindOne();
            //int i = 0;

            SearchResultCollection resultCol = dssearch.FindAll();

            if (resultCol != null)
            {
                int counter;
                for (counter = 0; resultCol.Count < 0; counter++)
                {
                    //string UserNameEmail;

                    if (resultCol.PropertiesLoaded.Contains("Ime") || resultCol.PropertiesLoaded.Contains("Prezime"))
                    {
                        //List<Korisnik> korisnik = new List<Korisnik>();
                        Korisnik korisnik = new Korisnik();

                        var Ime = sresult.Properties["Ime"][0].ToString();
                        var Prezime = sresult.Properties["Prezime"][0].ToString();
                        var LoginName = sresult.Properties["LoginName"][0].ToString();
                        var Status = sresult.Properties["Status"][0].ToString();
                        var AccountExpired = sresult.Properties["AccountExpired"][0].ToString();
                        var PassNevExp = sresult.Properties["PassNevExp"][0].ToString();
                        var DomenskaGrupa = sresult.Properties["DomenskaGrupa"][0].ToString();
                        var Email = sresult.Properties["Email"][0].ToString();

                        DataRow dr = dt.NewRow();
                        dr["Ime"] = korisnik.Ime;
                        dr["Prezime"] = korisnik.Prezime;
                        dr["LoginName"] = korisnik.LoginName;
                        dr["Status"] = korisnik.Status;
                        dr["AccountExpired"] = korisnik.AccountExpired;
                        dr["PassNevExp"] = korisnik.PassNevExp;
                        dr["DomenskaGrupa"] = korisnik.DomenskaGrupa;
                        dr["Email"] = korisnik.Email;

                        dt.Rows.Add(dr);
                        lstuser.Add(korisnik);

                    }

                }
            }

            return "";

}

И в моем контроллере я вызываю VratiKorisnike()

public IActionResult VratiKorisnike()

    {
        ViewBag.Korisnici = _korisnikServis.VratiKorisnike();            
        return View("Index"); 

}

И я использую ViewBag, но в View данные не отображаются

@foreach (var item in ViewBag.Korisnici)
{
    <table>
        <tr>
            <th>Ime</th>
            <th>Prezime</th>
        </tr>
        <tr>
            <td>@Model.Ime</td>
            <td>@Model.Prezime</td>
        </tr>
    </table>
}

1 Ответ

0 голосов
/ 22 апреля 2020

Сначала вам нужно вернуть lstuser, поэтому вам нужно сначала изменить тип возвращаемого вами метода на List<Korisnik>, а затем вернуть lstuser внутри вашего метода, поэтому измените его:

public string VratiKorisnike()

К этому:

public List<Korisnik> VratiKorisnike()

И добавьте это:

return lstuser;

Что вам нужно сделать во-вторых, приведение вашего ViewBag.Korisnici к List<Korisnik> по вашему мнению и используйте переменную item вместо Model в foreach l oop:

    @foreach (var item in (List<Korisnik>)ViewBag.Korisnici)
{
    <table>
        <tr>
            <th>Ime</th>
            <th>Prezime</th>
        </tr>
        <tr>
            <td>@item.Ime</td>
            <td>@item.Prezime</td>
        </tr>
    </table>
}
...