0

ここでいくつかの質問を読みましたが、それらはすべて個別の変数として定義できますが、私のものは少し違うと思います:

  var sliderRecordList = this._sliderService.GetAllAsQueryable();      
  var sliderModelList = sliderRecordList.Select(record => new SliderModel()
      {
        Id = record.Id,
        SlideName = record.SlideName,
        SlideOrder = record.SlideOrder,
        SlideUrl = record.SlideUrl,
        SlideImageUrl = Url.Content("~/Content/AhsenSliderImages/" + record.Id + ".jpg"),
        Enabled = record.Enabled
   });

Url.Content()問題は、メソッドが呼び出される場所に依存します。なにか提案を?Url.Content()メソッドを削除しようとしましたが、うまくいきませんでした。

4

2 に答える 2

2

最初にクエリをマテリアライズしてから、UI の問題をセットアップします。

var sliderRecordList = this._sliderService.GetAllAsQueryable().ToList();
var sliderModelList = sliderRecordList
   .Select(record => new SliderModel
      {
        Id = record.Id,
        SlideName = record.SlideName,
        SlideOrder = record.SlideOrder,
        SlideUrl = record.SlideUrl,
        SlideImageUrl = Url.Content("~/Content/AhsenSliderImages/" + record.Id + ".jpg"),
        Enabled = record.Enabled
   });

.ToList()最初にクエリを実行します。

補足として、 AutoMapperを使用して上記のコードを数行に変換することを検討してください。

var sliderRecordList = this._sliderService.GetAllAsQueryable().ToList();
var sliderModelList = Mapper.Map<ICollection<SliderRecord>, ICollection<SliderModel>>(sliderRecordList);

URL 生成はビューで行うことができます。

于 2012-10-04T01:31:48.630 に答える
1

これは、関数Url.ContentがSQLの同等の関数に変換できないためです。AsEnumerableリストに関数を使用して試してみてください

var sliderModelList = sliderRecordList.AsEnumerable.Select(record => new SliderModel()
      {
        Id = record.Id,
        SlideName = record.SlideName,
        SlideOrder = record.SlideOrder,
        SlideUrl = record.SlideUrl,
        SlideImageUrl = Url.Content("~/Content/AhsenSliderImages/" + record.Id + ".jpg"),
        Enabled = record.Enabled
   });

幸運を。

于 2012-10-04T01:40:04.753 に答える