我的主页面动态创建标签(jQuery UI标签),并使用Ajax在其上加载部分视图。此部分视图具有viewmodel
,并包含其他部分视图。部分视图strTypd
为viewmodel
上的元素。当我尝试传递元素时,我收到错误。
“主要部分视图”
@model HMSDB.ViewModels.vm_administrar_permisos
<div id="PerAdmGroupBoxUser">
<h3>Seleccion de usuarios</h3>
<div>
<div id="PerAdmUsrGrid">
@Html.Partial("_BuscarUsuario", @Model.vmBuscarUsuario) //<-- ERROR
</div>
<div id="PerAdmUsrData">
@Html.Action("_DetalleUsuario", "Usuario")
</div>
</div>
</div>
主要局部视图的模型:
public class vm_administrar_permisos
{
public vm_usuario_seleccionado vmUsuarioSeleccionado { get; set; }
public vm_buscar_usuario vmBuscarUsuario { get; set; }
public IEnumerable<Permisos_Rol_User> roles { get; set; }
public IEnumerable<Permisos_Grupo_User> grupos { get; set; }
}
儿童局部视图:
@model HMSDB.ViewModels.vm_buscar_usuario
<h3>Seleccion de usuarios</h3>
InvalidOperationException异常:
The passed model´s element to the dictionary is
of type:'HMSDB.ViewModels.vm_administrar_permisos', but this dictionary requires a
model´s element of type 'HMSDB.ViewModels.vm_buscar_usuario'
编辑: 父部分视图呼叫:
function getTabContent(idT, urlC) { //ajax call to partial view
$.ajax({
url: urlC,
type: 'GET',
async: false,
success: function (result) {
$("#"+idT).html(result);
}
});
};
控制器:
public ActionResult _Administrar()
{
vm_administrar_permisos model = new vm_administrar_permisos();
model.grupos = db_cm.Permisos_Grupo_User.Include("Permisos_Grupo")
.Where(gu => gu.id_user == HttpContext.User.Identity.Name && gu.conceder == true);
model.roles = db_cm.Permisos_Rol_User.Include("Permisos_Rol")
.Where(ur => ur.id_user == HttpContext.User.Identity.Name && ur.conceder == true);
return PartialView(model);
}
答案 0 :(得分:1)
我怀疑你在某个地方有过时的标记版本(例如_Administrar.cshtml)。尝试指定视图的完整路径,以“〜”开头,作为Controller.PartialView
和Html.Partial
的第一个参数。
另外,您是否遗漏了创建/分配model.vmBuscarUsuario
的代码?