在我的观点中,我有:
<%
foreach (Personas p in Model.Personas) {
if (p.DisType == DisType.TextArea) {
%>
<% Html.RenderPartial("~/Views/Shared/Controls/Custom/xxx/Textbox.ascx", p); %>
<%
}
}
%>
首先,我不确定我是否有&lt; %%&gt;右。
其次,在我的Partial View Textbox.ascx中,我强烈地将它输入到我的ViewModel类,就像我在View ...相同的ViewModel类中一样。我的ViewModel类具有Personas类型的Property。所以我假设因为我将ap(类型为Personas)传递给我的RenderPartial作为传递给它的对象,只要我强烈输入我的部分视图并且该对象(这是ViewModel clas)具有该类型在它(人物角色)中我现在可以在我的部分视图中执行此操作:
<fieldset>
<div>
<span>*</span><label><%=Model.Personas.Name %></label>
<p><%=Model.Personas.Info %></p>
</div>
<div>
<%=Html.TextBox(Model.Personas.Name, "",
new { name=Model.Personas.Name, id= Model.Personas.Id,
size = Model.Personas.Size1 })%>
</div>
</fieldset>
最后,所以我尝试了所有这些。但没有任何东西被渲染我不知道为什么。我不知道我的视图中是否只是语法错误,或者我没有传递有效数据,或者我的部分视图中是否正确连接到传递的对象。
答案 0 :(得分:1)
您的假设不正确。如果您将一个“Personas”类型传递给部分视图作为其模型,则它需要继承System.Web.Mvc.ViewUserControl<Personas>
,而不是与父视图相同的类型。部分视图不能“知道”您的父视图模型类型具有Personas类型的属性,并以某种方式将传递给它的对象映射到该属性。
此外,由于您的服务器代码之间没有呈现文字文字,因此您可以将代码缩短为:
<%
foreach (Personas p in Model.Personas) {
if (p.DisType == DisType.TextArea) {
Html.RenderPartial("~/Views/Shared/Controls/Custom/xxx/Textbox", p);
}
}
%>
答案 1 :(得分:1)
视图应继承自ViewUserControl<Personas>
在视图中,模型指向每个角色实例
<span>*</span><label><%=Model.Name %></label>