Chr*_*s M 5 c# exception asp.net-mvc-2
我使用两个DataContext对象返回单独的AsQueriable()数据集,然后使用linq连接两个.数据构造工作完美,但是当我将组合数据集传递给视图时,我得到的错误"对象"不包含"名称"的定义.
在调试会话期间,我可以清楚地看到父模型和foreach循环中的每个"项"都具有可见/可访问的所有数据和键.我很困惑.
stackoverflow.com上与此问题相关的许多其他q&a都没有解决我的问题,因此会欣赏一双新的眼睛并希望能够解决这个问题.
非常感谢! - 代码时间:
数据构建
public ActionResult SplashImages()
{
var g = (from i in GetGallerySplash() join o in GetFestivals() on i.Festival equals o.ID orderby i.Rating descending select new {i.Photo, i.OwnedBy, i.Rating, o.Name });
Response.ContentType = "text/xml";
return View(g);
}
private IEnumerable<Gallery> GetGallerySplash()
{
GallerysDataContext gdc = new GallerysDataContext();
return (from i in gdc.Galleries orderby i.Rating descending select i).Take(15).AsQueryable();
}
private IEnumerable<Festival> GetFestivals()
{
FestivalsDataContext fdc = new FestivalsDataContext();
return (from i in fdc.Festivals select i).AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)
VSExpress的错误屏幕:

任何有关解决方案的指导都将不胜感激.谢谢!
C
我建议您创建一个模型来封装两个 IEnumerable 对象,例如
public class GalleryModel
{
public IEnumerable<Gallery> Galleries { get; set }
public IEnumerable<Festivals> Festivals { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后强类型您的视图以匹配模型
...Inherits="System.Web.Mvc.ViewPage<GalleryModel>"
Run Code Online (Sandbox Code Playgroud)
然后在您的模型中,您可以类型安全地引用每个对象,例如
<% foreach (var t in Model.Galleries) ...
Run Code Online (Sandbox Code Playgroud)