我需要从数据库中显示记录。但我有一个错误:
'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'
答案 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>
}