2 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個贊
我認(rèn)為使用動態(tài)對象不是一個好主意,默認(rèn)情況下視圖是強(qiáng)類型的,沒有模型就無法創(chuàng)建基于屬性的模型驗(yàn)證......
通過參考官方文檔和其他資源,您可以使用擴(kuò)展方法將對象轉(zhuǎn)換為 ExpandoObject 并且您的函數(shù)應(yīng)該可以工作:
擴(kuò)展方法:
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() );
解釋:
這樣做的原因是匿名類型在內(nèi)部傳遞給控制器,因此只能從聲明它的程序集中訪問它。由于視圖是單獨(dú)編譯的,因此動態(tài)綁定器抱怨它無法越過該程序集邊界。
但是如果你仔細(xì)想想,動態(tài)綁定器的這種限制實(shí)際上是人為的,因?yàn)槿绻闶褂盟接蟹瓷?,沒有什么可以阻止你訪問那些內(nèi)部成員(是的,它甚至可以在中等信任中工作)。因此,默認(rèn)的動態(tài)綁定器正在竭盡全力執(zhí)行 C# 編譯規(guī)則(您無法訪問內(nèi)部成員),而不是讓您執(zhí)行 CLR 運(yùn)行時允許的操作。

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個贊
您發(fā)送列表藝術(shù)家但嘗試獲得一位藝術(shù)家您應(yīng)該更改此
string artist_Name = Model.Artist.Artist_Name;
到
string artist_Name= Model.Artist.FirstOrDefault().Artist_Name;
要么
改變
@model dynamic
到
@model ExpendoObject
- 2 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)