0

ASP.NETMVC3Webアプリケーションで。

私は見解を持っています。ビューにはIEnumerableモデルがあります。

モデルのすべてのアイテムをループして、item.Nameを表示する必要があります。

景色:

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

モデルアイテムの「名前」プロパティにアクセスするにはどうすればよいですか?

助けてくれてありがとう

4

5 に答える 5

3

メソッドreturnの厳密な型を作成します。

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> 
于 2012-06-06T18:54:42.317 に答える
1

最も簡単な方法は、クラスを定義し、オブジェクトの代わりにPerson動作するようにモデル/コントローラーを変更することです。IEnumerable<Person>

于 2012-06-06T18:54:43.743 に答える
1

おそらく明示的に行う必要がありますCasting

@(string) item.Name

またはdynamicタイプを使用します。

ビューで、変更

@model IEnumerable<Object> 

@model IEnumerable<dynamic> 
于 2012-06-06T18:55:03.433 に答える
0

私は間違っているかもしれませんが、あなたはIEnumerable<dynamic>代わりに使用しようとするかもしれませんIEnumerable<Object>

于 2012-06-06T18:53:55.580 に答える
0

モデルタイプはです。プロパティにアクセスできるようIEnumerable<Object>にに変更してください。IEnumerable<Person>Person

于 2012-06-06T18:54:12.590 に答える