我有一个强类型的Person视图,我想渲染一个部分:
人物视图(强类型为人物)
<label for="name">Name</label>
<% Html.RenderPartial("AddressForm"); %>
</label>
AddressForm View(无类型,因为我也想在分销商强类型视图中使用它)
当我尝试从Person视图中调用此partial时,我收到此错误:
编译器错误消息: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 :(得分:3)
您不能将强类型助手与动态视图模型一起使用:
您可以使用非强类型帮助程序,如下所示:
<%@ 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 :(得分:2)
难道你不能简单地通过让你想在AddressForm视图中呈现的模型类型实现一个接口,并让AddressForm部分地使用该接口作为其模型类型来强制键入所有视图吗?