2010-10-04 56 views
4
一個局部視圖

我一個強類型的人來看,我想渲染的部分在:呈現兩種不同的強類型的意見

人稱視角(強類型的人)

<label for="name">Name</label> 
    <% Html.RenderPartial("AddressForm"); %> 
</label> 

爲AddressForm查看(非類型化的,因​​爲我也想在經銷商使用這個強類型的視圖)

當我嘗試調用從該人士看來這個部分,我得到這個錯誤:

編譯器錯誤信息:CS1963:表達式樹不能包含一個動態操作

源錯誤:

Line 8: </div> 
Line 9: <div class="editor-field"> 
Line 10:  <%= Html.TextBoxFor(model => model.addressLine1) %> 
Line 11:  <%: Html.ValidationMessageFor(model => model.addressLine1) %> 
Line 12: </div> 

我怎樣才能得到這部分的渲染,這樣我可以用我的部分addressView多個其它類型?

被修改:

// GET: /Person/Create 

public ActionResult Create() 
{ 
    Person person = new Person();  
    return View(person); 
} 

//Person create view 
<% Html.RenderPartial("AddressForm"); %> 

//AddressForm Partial 
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 

<fieldset> 
    <legend>Address</legend> 
    <div class="editor-label"> 
     <label for="addressLine1" class="addressLabel">Address Line 1</label> 
    </div> 
    <div class="editor-field"> 
     <%= Html.TextBoxFor(model => model.addressLine1) %> 
     <%: Html.ValidationMessageFor(model => model.addressLine1) %> 
    </div> 
</fieldset> 

誤差高於。

+0

請張貼更多的代碼 – Omu 2010-10-04 17:53:39

回答

2

不能使用強類型的輔助動態視圖模型:

可以使用非強類型的輔助,而不是像這樣:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 

<fieldset> 
<legend>Address</legend> 
<div class="editor-label"> 
<label for="addressLine1" class="addressLabel"> 
Address Line 1</label> 
</div> 
<div class="editor-field"> 
<%= Html.TextBox("addressLine1") %> 
<%: Html.ValidationMessage("addressLine1") %> </div> 
</fieldset> 
+1

謝謝!這工作完美。 – 2010-10-04 18:21:26

+0

歡迎您:-) – Omu 2010-10-04 18:22:01

2

難道你不能簡單地通過讓你想要在AddressForm視圖中呈現的模型類型實現一個接口並讓AddressForm局部使用該接口作爲其模型類型來強制類型化所有視圖嗎?

+0

< - 新來的MVC和.net。我會在這裏搜索一個例子。謝謝! – 2010-10-04 17:57:20

+0

+1我該怎麼做。即<%@ Control Language =「C#」Inherits =「System.Web.Mvc.ViewUserControl 」%> ..或類似的地方,其中IAddress是您的任何地址模型類繼承的接口。 – 2010-10-04 20:55:05