我有一个视图模型的部分视图,但是在主视图中渲染部分视图时遇到不便
我收到以下消息:
传递到字典中的模型项类型为"RolMVC3.Models.USER",但此字典需要类型为"RolMVC3.Areas"的模型项。分销商.型号. 位置视图模型 '
视图模型(LocationViewModel),视图模型在一个区域内
namespace RolMVC3.Areas.Distributor.Models
{
public class LocationViewModel
{
[Required]
public decimal IdDepartment { get; set; }
[Required]
public string NameCity { get; set; }
[Required]
public string NameNeighborhood { get; set; }
}
}
}
部分视图(_LocationEdit):
@model RolMVC3.Areas.Distributor.Models.LocationViewModel
.....
.....
<div class="editor-label">
@Html.LabelFor(model => model.IdDepartment)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.IdDepartment, new SelectList(ViewBag.Department as System.Collections.IEnumerable, "IdDepartment", "NameDepartment", ViewBag.selectedDepartment), "--- Select ---", new { id = "Department"})
@Html.ValidationMessageFor(model => model.Idepartment)
</div>
.....
.....
主视图(编辑):
@model RolMVC3.Models.USER
@{
ViewBag.Title = "Edit User";
}
....
....
@{Html.RenderPartial("_LocationEdit");}
....
....
我该如何解决这个问题?
祝福
在主视图中(编辑)传递位置视图模型,因为部分视图需要此模型,并且您不会传递它@Html.RenderPartial
@model RolMVC3.Models.USER
@{
ViewBag.Title = "Edit User";
}
....
....
@{Html.RenderPartial("_LocationEdit",YourLocationViewMODEL);}
....
....
当你调用你的RenderPartial时,你需要传入一个模型类型的位置视图模型。现在看起来您的编辑视图中没有这个,所以你需要 a) 从控制器将其添加到 viewbag 中并通过 RenderPartial 调用传递它,或者 b) 更改编辑视图中的模型类型(您可能需要一个同时保存用户和位置视图模型信息的包装器)
[编辑]源代码如下所示:
// ViewModel
namespace RolMVC3.Areas.Distributor.Models
{
public class EditPageViewModel
{
public LocationViewModel LocationViewModel {get;set;]
public USER User { get; set; }
}
}
// Edit View
@model RolMVC3.Areas.Distributor.Models.EditPageViewModel
@{
ViewBag.Title = "Edit User";
}
....
....
@Html.RenderPartial("_LocationEdit",Model.LocationViewModel);
....
....