MVC3:访问视图中对象的属性
本文关键字:对象 属性 视图 访问 MVC3 | 更新日期: 2023-09-27 18:36:22
in an ASP.NET MVC3 Web 应用程序中。
我有一个观点。该视图具有 IEnumerable 模型。
我需要遍历模型的所有项目并显示项目。名字
观点:
@model IEnumerable<Object>
@{
ViewBag.Title = "Home";
}
@foreach (var item in Model)
{
<div class="itemName">@item.Name</div>
}
在控制器中,我使用 Linq to 实体从数据库中获取对象列表。
控制器:
public ActionResult Index()
{
IEnumerable<Object> AllPersons = GetAllPersons();
return View(AllSurveys);
}
public IEnumerable<Object> GetAllPersons()
{
var Context = new DataModel.PrototypeDBEntities();
var query = from p in Context.Persons
select new
{
id = p.PersonsId,
Name = p.Name,
CreatedDate = p.CreatedDate
};
return query.ToList();
}
当我运行时,我收到此错误:
'object' does not contain a definition for 'Name' and no extension method 'Name' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
如何访问模型项的"名称"属性?
非常感谢任何帮助
为方法返回创建一个强类型。
public class MyObject {
public int id {get;set;}
public string Name {get;set;}
public DateTime CreatedDate {get;set;}
}
public IQueryable<MyObject> GetAllPersons()
{
var Context = new DataModel.PrototypeDBEntities();
var query = from p in Context.Persons
select new MyObject
{
id = p.PersonsId,
Name = p.Name,
CreatedDate = p.CreatedDate
};
return query;
}
。然后更新您的视图以反映新模型...
@model IQueryable<MyObject>
最简单的方法是定义一个类Person
,并更改模型/控制器以使用IEnumerable<Person>
而不是对象。
您可能需要执行显式Casting
@(string) item.Name
或使用dynamic
类型。
在视图中,更改
@model IEnumerable<Object>
自
@model IEnumerable<dynamic>
您的模型类型为 IEnumerable<Object>
,将其更改为 IEnumerable<Person>
,以便您可以访问Person
属性。
我可能是错的,但你可能会尝试使用IEnumerable<dynamic>
而不是IEnumerable<Object>