2 回答
TA貢獻1906條經驗 獲得超10個贊
我認為使用動態對象不是一個好主意,默認情況下視圖是強類型的,沒有模型就無法創建基于屬性的模型驗證......
通過參考官方文檔和其他資源,您可以使用擴展方法將對象轉換為 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 ( "yourView", ArtistModel.ToExpando() );
解釋:
這樣做的原因是匿名類型在內部傳遞給控制器,因此只能從聲明它的程序集中訪問它。由于視圖是單獨編譯的,因此動態綁定器抱怨它無法越過該程序集邊界。
但是如果你仔細想想,動態綁定器的這種限制實際上是人為的,因為如果你使用私有反射,沒有什么可以阻止你訪問那些內部成員(是的,它甚至可以在中等信任中工作)。因此,默認的動態綁定器正在竭盡全力執行 C# 編譯規則(您無法訪問內部成員),而不是讓您執行 CLR 運行時允許的操作。
TA貢獻1801條經驗 獲得超16個贊
您發送列表藝術家但嘗試獲得一位藝術家您應該更改此
string artist_Name = Model.Artist.Artist_Name;
到
string artist_Name= Model.Artist.FirstOrDefault().Artist_Name;
要么
改變
@model dynamic
到
@model ExpendoObject
- 2 回答
- 0 關注
- 121 瀏覽
添加回答
舉報
