2016-10-11 6 views
0

外部キー「BAZ_ID」を使用してデータベースからURLパスをロードするにはどうすればよいですか?MVC View Image URL:ラムダ式を文字列に変換できません

IMAGE_URL:

~/UploadImg/Untitled.png

はコントローラー:

public ActionResult Bazar() 
    { 
     WebEntities db = new WebEntities(); 
     var data = db.bazar.Include(c => c.images); 
     return View(data.ToList()); 
    } 

とビュー:ビューで

<div class="col-sm-2"> 
      <img src= "@Url.Content(modelItem => item.images.Where(a => a.BAZ_ID == item.ID).Select(b => b.IMAGE_URL).FirstOrDefault())" width="150" height="150" /> 
     </div> 

私はエラーを取得する:

Cannot convert lambda expression to type 'string' because it is not a delegate type

+1

先頭の 'modelItem =>'を削除します。しかし、クエリはコントローラに属し、ビューには属さず、イメージURLのプロパティを含むビューモデルを渡す必要があります。 –

+0

'FirstOrDefault()'は 'null 'でないオブジェクトを返すことは保証されていません。 –

+0

@StephenMueckeは答えとしてあなたのコメントを追加することを検討します - 私はあなたの偉大な答えを見て、私は "正しく"アップアップすることはできません;-) –

答えて

2

Url.Contentメソッドでは、ラムダ式ではなくパラメータとして文字列が必要です。

string ImageUrl(例えば)あなたは

<img src= "@Url.Content(item.images.Where(a => a.BAZ_ID == item.ID).Select(b => b.IMAGE_URL).FirstOrDefault())" ... /> 

しかし、クエリはコントローラではなく、ビューに属している(大手modelItem =>がドロップ)にあなたのループ内のコードを変更することができますし、あなたのビューモデルは、プロパティが含まれている必要がありコントローラーに表示された後、ビューに表示されます

<img src= "@Url.Content(item.ImageUrl)" ... /> 
関連する問題