Hi i'm trying to load a partial view in a modal on a view that requires a List<> model when i click the New Role button. Please what am i missing? I get the error
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Vidly.Models.AvailableRole]', but this dictionary requires a model item of type 'Vidly.ViewModel.RoleMenuViewModel'.
Model
public class RoleMenuViewModel
{
public RoleMenuViewModel()
{
//Menus = new List<Menu>();
MenuIds = new List<string>();
}
public List<string> MenuIds { get; set; }
public MultiSelectList Menus { get; set; }
public AvailableRole AvailableRoles { get; set; }
public List<AvailableRole> RoleMenu { get; set; }
}
Partial View
@model Vidly.ViewModel.RoleMenuViewModel
@{
ViewBag.Title = "Edit Role";
}
<legend>Create or Edit a Role</legend>
@using (Html.BeginForm("SaveRole", "Uam"))
{
<div class="form-group">
@Html.TextBoxFor(m => m.AvailableRoles.Name, new { @class = "form-control", PlaceHolder = "Role Name" })
@Html.ValidationMessageFor(m=>m.AvailableRoles.Name)
</div>
Main View
@model List<Vidly.Models.AvailableRole>
@{
ViewBag.Title = "CreateRole";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Available Roles</h2>
<div id="addRoleForm">
<button class="btn btn-success pull-right addRole" type="button" data-
toggle="modal">New Role</button>
</div>
Controller
public ActionResult Index()
{
//get all roles in db
var availableRoles = dbContext.AvailableRoles.OrderBy(a=>a.Name).ToList();
return View("CreateRole", availableRoles);
}
public ActionResult CreateRole(int? id)
{
if (id == null)
{
var menuViewModel = new RoleMenuViewModel
{
Menus = GetMultiselectItems()
};
return View("SaveRole", menuViewModel);
}
JavaScript
<script type="text/javascript">
$(".addRole").on("click",
function() {
bootbox.dialog({
title: "Create new role",
message: "@Html.Partial("SaveRoles")"
});
});