1. ホーム
  2. dynamic

[解決済み] Razor の Dynamic Anonymous 型で RuntimeBinderException が発生する。

2022-04-26 21:33:52

質問

以下のようなエラーが発生します。

'object' に 'RatingName' の定義がありません。

匿名ダイナミック型を見ると、明らかにRatingNameを持っています。

Tupleでできることはわかったのですが、なぜエラーメッセージが発生するのか理解したいです。

どのように解決するのですか?

匿名型が内部プロパティを持つことは、.NETフレームワークの設計上の決定としては不適切であると私は考えます。

ここでは、簡単で ナイスエクステンション は、この問題を解決するために、すなわち、匿名オブジェクトをすぐにExpandoObjectに変換するために使用されます。

public static ExpandoObject ToExpando(this object anonymousObject)
{
    IDictionary<string, object> anonymousDictionary =  new RouteValueDictionary(anonymousObject);
    IDictionary<string, object> expando = new ExpandoObject();
    foreach (var item in anonymousDictionary)
        expando.Add(item);
    return (ExpandoObject)expando;
}

それは、とても 造作もない を使用します。

return View("ViewName", someLinq.Select(new { x=1, y=2}.ToExpando());

もちろん、あなたの見解ではそうでしょう。

@foreach (var item in Model) {
     <div>x = @item.x, y = @item.y</div>
}