显示数据库中的记录

时间:2011-11-07 00:34:01

标签: asp.net-mvc-3

我需要从数据库中显示记录。但我有一个错误:

  

'object'不包含'Login'的定义

查看:

 @using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Dodaj Pracownika</legend>

    @foreach (var pr in ViewBag.dane)
        {
            <div>Login: @pr.Login</div>

              <div>Imie: @pr.imie</div> 

        }
</fieldset>
}

控制器:

public ActionResult detail(int LoginID)
    {
        var user = (from p in baza.Logowanies
                    join d in baza.uzytkowniks on p.LoginID equals d.LoginID 
                    where LoginID == p.LoginID
                    select new { p.Login, p.Haslo, p.konto, d.imie, d.nazwisko, d.pesel, d.nip, d.telefon, d.adres_zamieszkania, d.email }).ToList();
        ViewBag.dane = user;
        return View();
    }

当我将一个表中的记录放入数据库(没有连接查询)时,它正在工作。但现在有些不对劲。

使用

  

@ grid.GetHtml

一切都很好。

//////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////

修改

我进行了编辑,现在我有:

查看:

@model Restauracja.Models.pracownikModel
 @foreach (dynamic pr in ViewBag.dane)
        {
            <div>Login: @pr.Login</div>

             <div>Imie: @pr.imie</div>

型号:

public class pracownikModel 
    {
         public LoginModel LoginModel { get; set; }
         public uzytkownikModel uzytkownikModle { get; set; }
       public pracownikModel() {
           LoginModel = new LoginModel();
           uzytkownikModle = new uzytkownikModel();
       }
    }

    public class LoginModel 
    {
        [Required]
        public string Użytkownik { get; set; }

        [Required]
        public string Hasło { get; set; }

        public string Konto { get; set; }

    }

    public class uzytkownikModel
    {
        [Required]
        public string imie { get; set; }

        [Required]
        public string nazwisko { get; set; }
           . . . . .

    }

和控制器:

public ActionResult Kontakt()
        {
            bazaDataContext baza = new bazaDataContext();
            var user = (from p in baza.Logowanies
                        join d in baza.uzytkowniks on p.LoginID equals d.LoginID
                        select new pracownikModel{p.Login, d.imie}).ToList();

            ViewBag.dane = user;
            return View(user);
        }

在控制器中选择我有

  

选择新的pracownikModel {p.Login,d.imie})

我无法添加

  

uzytkownik = p.Login,imie = d.imie

因为insted uzytkownik和imie我有LoginModel或uzytkonikModel。

我有

  

选择新 pracownikModel {...}

我有错误:

  

无法使用集合初始值设定项初始化类型'Restauracja.Models.pracownikModel',因为它没有实现'System.Collections.IEnumerable'

1 个答案:

答案 0 :(得分:4)

您已更改为使用匿名对象,因此视图不知道它是什么类型,默认为object类型。您可以使用dynamic代替var,或者您可以选择具有与匿名对象相同属性的类,在这种情况下,它可以确定类型并知道它具有这些属性。< / p>

    @foreach (dynamic pr in ViewBag.dane)
    {
        <div>Login: @pr.Login</div>

          <div>Imie: @pr.imie</div> 

    }

或者

public ActionResult detail(int LoginID)
{
    var user = (from p in baza.Logowanies
                join d in baza.uzytkowniks on p.LoginID equals d.LoginID 
                where LoginID == p.LoginID
                select new LoginModel
                {
                    Login = p.Login,
                    Haslo = p.Haslo,
                    ...
                }).ToList();
    ViewBag.dane = user;
    return View();
}

使用模型类

public class LoginModel
{
      public string Login { get; set; }
      public string Haslo { get; set; }
      ...
} 

您没有使用视图模型而不是在ViewBag上设置数据的任何原因?

动作

    ...
    return View( user );
}

查看

@model LoginModel

...

     @foreach (dynamic pr in Model)
     {
        <div>Login: @pr.Login</div>

         <div>Imie: @pr.imie</div> 

     }