0

あるページで、この方法で他のビューをレンダリングしています:

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

レンダリングされたビューでは、このモデルを次のように取得します。

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

そして、非常に奇妙なsthがあります。プロパティにアクセスできますが<%= model.Property %>、ラムダは機能しないため、これは機能しません

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

1 に答える 1

1

ラムダ式ヘルパーは、厳密に型指定されたビューでのみ機能します。ViewData を渡す代わりに、Partial View を厳密に型指定し、オブジェクト モデルを Html.RenderPartial に渡します。次に、ラムダで期待される機能が得られます。

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

上記のコードでは、 m はそのビューからのモデルであると想定されているため、ヘルパーはコントロールをレンダリングしようとしますが、そのビューにはモデルがなく、オブジェクトによって手動で設定され、コントロール レンダリングからの反射は失敗します。

編集:

RenderPartial には、モデルをパラメーターとして渡す機能を提供するオーバーロードがあります。こちらをご覧ください。

RenderPartial

その助けを願っています!

于 2013-04-30T12:32:25.450 に答える