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?)

如何访问模型项的"名称"属性?

非常感谢任何帮助

MVC3:访问视图中对象的属性

为方法返回创建一个强类型。

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>