我收到以下错误:
'object'不包含'RatingName'的定义
当您查看匿名动态类型时,它显然具有RatingName.

我意识到我可以用元组做到这一点,但我想理解为什么会出现错误信息.
我从各种其他相关问题,了解这里,并在这里等等,因为匿名类型与内部访问定义你不能从控制器通过匿名类型对象的视图.View和Controller代码被编译到不同的程序集中,因此尝试使用它会导致此错误...
对象不包含'foo'的定义
这很好,我可以接受,虽然起初很烦人.有足够的建议解决方法来安抚我.
但是,我认为你仍然可以将匿名类型从视图传递到局部视图,因为它们都是视图,它们将在同一个程序集中编译.
Razor查看代码......
@Html.Partial("Partial1", new { foo = "Something", bar = "Something else" })
Run Code Online (Sandbox Code Playgroud)
和"Partial1"的局部视图代码
@model dynamic
<h1>@Model.foo</h1>
<span>@Model.bar</span>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这个WAS在一个新的MVC项目的开发开始工作,但是当我添加了更多的视图时它就停止了工作,现在我给出了与上面提到的相同的错误.
就好像我已达到一个阈值,在该阈值中视图和局部视图不再编译到同一个程序集中.但我只是在猜测.
我想知道是否有人可以解释这一点.
在ASP.NET Core 2.0应用程序上,我需要渲染局部视图并传递一些参数:
@Html.Partial("Form", new { File = "file.pdf" })
Run Code Online (Sandbox Code Playgroud)
在部分视图中,我尝试使用以下方法访问它:
@Model.File
Run Code Online (Sandbox Code Playgroud)
我收到错误:
RuntimeBinderException: 'object' does not contain a definition for 'File'
Run Code Online (Sandbox Code Playgroud)
如果我只是使用我的部分:
@Model
Run Code Online (Sandbox Code Playgroud)
我在页面上打印了以下内容:
{ File = file.pdf }
Run Code Online (Sandbox Code Playgroud)
所以模型正在传递,其中有一个属性文件.
那我错过了什么?
我使用两个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的错误屏幕: …