簡體   English   中英

“對象”不包含定義<property>在asp.net核心3.1中

[英]'object' does not contain a definition for <property> in asp.net core 3.1

這個問題有兩個部分

1號:
我收到了與這篇文章相同的問題
唯一的區別是我在 asp.net core v3.1 中運行
Razor 中的動態匿名類型導致 RuntimeBinderException

我試過expando解決方案
但我仍然得到“對象”不包含“我的財產”錯誤的定義

繼承人我的代碼
控制器中

        var obj = new { newRoundNumber = maxround + 1 };
        IDictionary<string, object> dict = new ExpandoObject();
        dict.Add("p", obj);
        var expando = StaticFunctions.ToExpando(dict);
        return PartialView("_RoundsPartial", expando);

局部視圖中

@{
var p =  Model.p;
var newRound = p.newRoundNumber;   <--- fails

for (var r = 1; r <= newRound; r++)
{
    <div>@r</div>
}

}

誰能告訴我怎么了?

2號:
顯然這曾經有效

new{
  Project = projectInfo,
  WorkItem = workitem
}.ToExpando());

但不再在asp.net core v3.1
它允許的轉換是 ToString()
有沒有人知道asp.net core 中的等價物?

更新:
有評論回復可以嘗試此鏈接:
https://sebnilsson.com/blog/convert-c-anonymous-or-any-types-into-dynamic-expandoobject/

簡而言之:

using System.Dynamic;
public static ExpandoObject ToExpandoObject(this object obj)
{
    IDictionary expando = new ExpandoObject();

    foreach (PropertyDescriptor property in 
        TypeDescriptor.GetProperties(obj.GetType()))
    {
        expando.Add(property.Name, property.GetValue(obj));
    }

    return (ExpandoObject) expando;
}

目前這在這一行返回錯誤:

    IDictionary expando = new ExpandoObject();

和:
不能將類型 ExpandoObject 隱式轉換為 IDictionary

反之亦然

var expando = StaticFunctions.ToExpando(dict);
return PartialView("_RoundsPartial", dict);

您的意思是傳入expando而不是dict嗎?

擴展方法對我有用:

public static System.Dynamic.ExpandoObject ToExpandoObject(this object obj)
{
    IDictionary<string, object> expando = new ExpandoObject();
    foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj.GetType()))
    {
        expando.Add(property.Name, property.GetValue(obj));
    }
    return (ExpandoObject)expando;
}

...但我得到了同樣的錯誤“對象不包含定義”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM