2011-11-07 108 views
1

我需要從數據庫中顯示記錄。但我有一個錯誤:從數據庫顯示記錄

'object' does not contain a definition for '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); 
     } 

在控制器中選擇我有

select new pracownikModel{p.Login, d.imie})

,我不能添加

uzytkownik = p.Login, imie = d.imie

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

select new pracownikModel{...}

,我有錯誤:

Cannot initialize type 'Restauracja.Models.pracownikModel' with a collection initializer because it does not implement 'System.Collections.IEnumerable'

回答

4

你改變使用匿名對象,以便在視圖不知道它是什麼類型,默認爲object類型。您可以使用dynamic而不是var,或者您可以選擇具有與匿名對象相同屬性的類,在這種情況下,它將能夠確定類型並知道它具有這些屬性。

@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> 

    } 
+0

我嘗試做的,你寫的......但什麼是錯的......我編輯我的第一個問題相關的帖子。 – user1031034

+1

您必須使用屬性初始值設定項語法。 'new pracownikModel {nawisko = p.Login,imie = d.imie}' - 假設我的財產正確。 – tvanfosson

+0

我做了你多麼悲傷,但仍然有一個錯誤: ''Restauracja.Models.pracownikModel'不包含'nazwisko''的定義 ''Restauracja.Models.pracownikModel'不包含'imie' ' – user1031034