MVC lambda不适用于RenderPartial

时间:2013-04-30 12:05:35

标签: asp.net-mvc asp.net-mvc-2

在一个页面上我以这种方式呈现其他视图:

<% Html.RenderPartial("Angebotspruefung", new ViewDataDictionary {{ "OpportunityEditModel", Model }} }); %>

在渲染视图中,我以这种方式检索此模型:

<% 
    OpportunityDetailsEditModel model = (OpportunityDetailsEditModel)ViewData["OpportunityEditModel"];    
%>

并且非常非常奇怪,我可以使用<%= model.Property %>访问属性但是lambda不起作用,所以这不起作用

<%= Html.HiddenFor(m => m.Property) %>

1 个答案:

答案 0 :(得分:1)

Lamda表达式Helpers仅适用于强类型视图。传递ViewData的Intead,使您的部分视图强类型化并传递给Html.RenderPartial对象模型。然后,您将获得lambda的预期功能。

 <%= Html.HiddenFor(m => m.Property) %>

在上面的代码中,m被视为其视图中的模型,因此帮助程序尝试呈现控件,但其视图没有Model,由对象手动设置,然后控件渲染的反射失败。 / p>

编辑:

RenderPartial有一个重载,让你能够将模型作为参数传递,看看这里:

RenderPartial

希望能帮到你!