2016-04-02 7 views
0

をサポートしている私は私のコントローラタイプ 'System.Linq.IQueryable`1の要素を比較できません。唯一のプリミティブ型、列挙型とエンティティタイプが

[HttpGet] 
public ActionResult Nabipour() 
{ 
    string name = "Nabipour"; 
    var username = (from T in _db.tbl_teacher 
        where T.Page==name 
        select T.Username); 
    ViewBag.Nabipour = from N in _db.tbl_Tpage 
         where N.Username.Equals(username) 
         select N; 
    ViewBag.papers = from P in _db.tbl_Tpaper 
        where P.Username.Equals(username) 
        select P; 

    return View(); 
} 

にこのコードを持っており、これは、このアクションの私の見解である:

@{ 
    ViewBag.Title = "Nabipour"; 
    Layout = "~/Views/Shared/_otherpage.cshtml"; 
} 
.... 
<ul> 
    @foreach (var paper in ViewBag.papers) 
    { 
     <li><a href="~/Content/Paper/@paper.PaperName"></a></li> 
    }     
</ul> 
.... 

あなたは私がチェックしていない参照のように私の選択したコードでnullと私は.FirstOrDefault()でこのコードを試してみました。エラー

タイプ 'System.Linq.IQueryable'の要素を比較できません。唯一のプリミティブ型、列挙型とエンティティタイプがサポートされています

@foreach (var paper in ViewBag.papers)上で私が何をすべき助けてください?

+1

適切なモデルで厳密に型指定されたビューの代わりにViewBagを使用しているのはなぜですか? – DavidG

+0

@DavidGこのビューに2つのモデルを使用する必要があるため.iまだコードを書きません。それがちょうど1つのモデルであれば、私は強く型付けされたビューを使用していました。しかし、私は両方のモデルからこの情報を送信するためにViewBagが必要です –

+0

'ViewBag'ではなく、必要なすべてのプロパティを持つビューモデルを使用してください。 –

答えて

1
[HttpGet] 
public ActionResult Nabipour() 
{ 
    string name = "Nabipour"; 
    var username = (from T in _db.tbl_teacher 
        where T.Page==name 
        select T.Username).FirstOrDefault(); 
    ViewBag.Nabipour = from N in _db.tbl_Tpage 
         where N.Username.Equals(username) 
         select N; 
    ViewBag.papers = (from P in _db.tbl_Tpaper 
        where P.Username.Equals(username) 
        select P).ToList(); 

    return View(); 
} 
関連する問題