2012-06-06 97 views
0

中對象的屬性。MVC3:在ASP.NET MVC3 Web應用程序中訪問視圖

我有一個看法。該視圖具有IEnumerable模型。

我需要遍歷模型的所有項目,並顯示item.Name

的觀點:

@model IEnumerable<Object> 
@{ 
    ViewBag.Title = "Home"; 
} 

@foreach (var item in Model) 
{ 
    <div class="itemName">@item.Name</div> 
} 

在控制器中,我使用LINQ到實體獲得對象的列表來自數據庫。

控制器:

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

如何訪問模型項目的 「名稱」 屬性?

非常感謝您的幫助

回答

3

爲您的方法返回創建一個強類型。

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

我可能是錯的,但你可以嘗試使用IEnumerable<dynamic>代替IEnumerable<Object>

+1

這並沒有任何意義...... – jrummell

+0

我不能讓代碼正確地格式化。 –

+0

正在使用單引號 –

0

你的模式類型爲IEnumerable<Object>,將其更改爲IEnumerable<Person>這樣您就可以訪問Person屬性。

1

最簡單的方法是定義一個類Person,並更改模型/控制器一起工作IEnumerable<Person>而不是對象。

1

你可能需要做一個明確的Casting

@(string) item.Name 

或使用dynamic類型。

在視圖中,更改

@model IEnumerable<Object> 

@model IEnumerable<dynamic>