亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MVC3中,使用ViewModel出錯,有錯誤信息,困惑很久,麻煩大俠們搭把手。

MVC3中,使用ViewModel出錯,有錯誤信息,困惑很久,麻煩大俠們搭把手。

茅侃侃 2018-12-11 17:05:06
在ArticleController中名為Index的ActionResult點右鍵,添加VIEW,名稱為Index,創建強類型視類,Model Class設為ArticleViewModel,選擇List模板,運行出錯,剛開始,ActionResult代碼如下: public ActionResult Index()        {            ICriteria cr = new EqualCriteria("CommentEnable", true);             IEnumerable<Article> list = _articleRepocitory.GetMany(cr);            return View(list);        }運行錯誤信息: 傳入字典的模型項的類型為“System.Data.Objects.ObjectQuery`1[EIS.Models.Article]”,但此字典需要類型“System.Collections.Generic.IEnumerable`1[EIS.Models.ArticleViewModel]”的模型項。 代碼如下: public ActionResult Index()        {            ICriteria cr = new EqualCriteria("CommentEnable", true);            IQueryable<Article> list = _articleRepocitory.GetMany(cr);            var vm = new ArticleViewModel();            ModelCopier.CopyModel(list, vm);            return View(vm);        }運行再錯,信息如下 傳請問一下這個怎么解決?
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

第一段代碼的錯誤很明顯的,你試圖view的強類型是IEnumerable<ArticleViewModel>,而傳入的類型卻是IEnumerable<Article>,這樣明顯不對。也就是說IEnumerable<Article> list = _articleRepocitory.GetMany(cr);
這句代碼有錯,要么改成IEnumerable<ArticleViewModel> list = _articleRepocitory.GetMany(cr);//不過GetMany這個方法的返回值必須支持這樣的類型轉換

第二段代碼問題,你也曉得了是類型不同引起的,但是你還是沒把類型改對。 var vm = new ArticleViewModel();
ModelCopier.CopyModel(list, vm);
這個兩句代碼要這么個修改,var vm = new IEnumerable<ArticleViewModel>();  //這個CopyModel方法我想你要實現的是從IEnumerable<Article>類型轉換成IEnumerable<ArticleViewModel>類型,但是從你的代碼上看卻是從IEnumerable<Article>類型轉換成ArticleViewModel,這個就是問題所在。將你的CopyModel這個方法寫好,然后var vm = new IEnumerable<ArticleViewModel>();  ModelCopier.CopyModel(list, vm);

這樣就差不多了


查看完整回答
反對 回復 2018-12-15
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊


return View(vm);  這里錯了,這里應該傳入 IEnumerable<ArticleViewModel> 類型.


查看完整回答
反對 回復 2018-12-15
  • 2 回答
  • 0 關注
  • 485 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號