使用RenderPartial的局部视图,模型不包含定义

时间:2014-01-04 19:24:32

标签: asp.net asp.net-mvc-3 asp.net-mvc-4 razor

我有一个返回视图的控制器。

在视图中,我渲染一个公共的共享局部视图,并将参数传递给它:

<div class="tab-pane" id="tab-sla">@{Html.RenderPartial(
        "./_sla",
        new
        {
            ContentTitle = "Service Level"
        });
    }
</div>

但是,在部分视图_sla中,我尝试访问属性ContentTitle时,会抛出错误'object' does not contain a definition for 'ContentTitle'

如果我使用@Model.ToString()转储模型属性,则会显示{ ContentTitle = "Service Level" }

有人可以告诉我我做错了什么以及如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这可能有所帮助(取自this SO答案,感谢卢卡斯):

  

根据David Ebbo的说法,你不能将匿名类型传递给   动态类型视图,因为匿名类型被编译为   内部。由于CSHTML视图被编译成单独的程序集,   它无法访问匿名类型的属性。

访问模型属性时,您也可以尝试使用ViewData。有时帮助我:

<h1>@ViewData["ContentTitle"]</h1>

希望这有帮助。

答案 1 :(得分:0)

有关详细信息,请在此处查看问题和答案:

MVC Razor dynamic model, 'object' does not contain definition for 'PropertyName'

基本上,它停止工作的最可能原因是因为你在同一文件夹中有另一个视图,其模型类型不可解析

使用损坏的模型类型更正违规视图,清理并重建解决方案,它应该再次起作用。