2

目標

私のビューでモデルを操作します。

問題

次の例外が発生します。

ディクショナリに渡されたモデル アイテムのタイプは 'System.Linq.Enumerable+WhereSelectListIterator 2[MyApp.Models.Data.bm_product_categories,<>f__AnonymousType31[System.String]]' ですが、このディクショナリにはタイプ 'System.Collections.Generic.IEnumerable`1[MyApp.Models] のモデル アイテムが必要です.Data.bm_product_categories]'.

詳細

私は使用しています:

  • C#.Net
  • かみそりエンジン
  • MVC4
  • ビジュアル スタジオ 2012

私の部分的なビュー ( _CategoriesList ):

@model IEnumerable<BluMercados.Models.Data.bm_product_categories>

<h1>Testing</h1>

私のコントローラー(CategoriesController)と彼の方法:

public ActionResult Render()
{
    var sluggifiedProjection =
        db.bm_product_categories
        .ToList()
        .Select(category => new
        {
            CategoryNameSlugged = category.Category_Name.GenerateSlug()
        });

    return PartialView("_CategoriesList", sluggifiedProjection);
}

質問

この問題を解決するにはどうすればよいですか? コントローラーからビューに渡さなければならないモデルが何であるかは本当にわかりません。

4

2 に答える 2

2

この問題は、単一のプロパティ CategoryNameSlugged を持つ匿名型のインスタンスを現在作成している場所を選択することによって発生します。選択操作によって列挙型の型が変更されないようにする必要があります。プロパティを設定できる場合、これはうまくいくかもしれません:

.Select(category =>
        {
            category.CategoryNameSlugged = category.Category_Name.GenerateSlug();
            return category;

        });
于 2013-06-18T22:54:10.953 に答える
2

モデルの一部として匿名型を渡しています。dynamic キーワードを使用してこれを行うこともできますが、おそらく ViewModel を作成する方がよいでしょう。

何かのようなもの

public class CategoryViewModel
{
    public WhatEverTypeThisIs NameSlugged { get; set; }
}

それから

public ActionResult Render()
{
    var sluggifiedProjection =
        db.bm_product_categories
        .ToList()
        .Select(category => new CategoryViewModel
        {
            NameSlugged = category.Category_Name.GenerateSlug()
        });

    return PartialView("_CategoriesList", sluggifiedProjection);
}

モデルは次のようになります

 @model IEnumerable<BluMercados.ViewModels.CategoryViewModel>

あなたがそれを置く名前空間に応じて

于 2013-06-18T23:35:02.940 に答える