hi sir i'm facing this error
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[CghPortal.Models.SubrolesObj]', but this dictionary requires a model item of type 'CghPortal.Models.SubrolesObj'.
here is my model
namespace CghPortal.Models
{
public class SubrolesObj
{
public int Id
{
get; set;
}
[Display(Name = "Status :")]
[Required(ErrorMessage = "Select status.")]
public int status
{
get;
set;
}
[Display(Name = "Main Role :")]
[Required(ErrorMessage = "Select main role.")]
public string MainRole
{
get; set;
}
[Display(Name = "Sub Role Name :")]
[Required(ErrorMessage = "Sub Role name cannot be blank.")]
public string SubRoleName
{
get; set;
}
public List<SubrolesObj> subrolesList { get; set; }
}
}
here is my another model
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace CghPortal.Models
{
public class SubRolesDal
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CgnPortalWtE"].ToString());
//SubRoles
public int InsertSubRoles(SubrolesObj objdemo)
{
SqlCommand cmd = new SqlCommand("InsertSubRoles", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@srname", objdemo.SubRoleName);
//cmd.Parameters.AddWithValue("@mrname", objdemo.MainRole);
cmd.Parameters.AddWithValue("@status", objdemo.status);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
public List<SubrolesObj> GetSubRolesList()
{
List<SubrolesObj> subroles = new List<SubrolesObj>();
SqlCommand cmd = new SqlCommand("GetSubRolesList", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sd = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
con.Open();
sd.Fill(dt);
con.Close();
foreach (DataRow dr in dt.Rows)
{
subroles.Add(
new SubrolesObj
{
Id = Convert.ToInt32(dr["ID"]),
SubRoleName = Convert.ToString(dr["SubRoleName"]),
MainRole = Convert.ToString(dr["RoleId"]),
status = Convert.ToInt32(dr["ActiveFlag"])
});
}
return subroles;
}
}
}
here is my controller
using CghPortal.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace CghPortal.Controllers
{
public class SubRolesController : Controller
{
//Sub Roles Section
public ActionResult SubRoles()
{
SubRolesDal sdb = new SubRolesDal();
ModelState.Clear();
return View(sdb.GetSubRolesList());
}
public ActionResult InsertSubRoles(SubrolesObj objr)
{
try
{
SubRolesDal sdb = new SubRolesDal();
int result = sdb.InsertSubRoles(objr);
if (result == 1)
{
ViewBag.Message = "SubRoles Added Successfully";
ModelState.Clear();
}
else if (result == -1)
{
ViewBag.Message = "SubRoles Already Exists!";
ModelState.Clear();
}
else
{
ViewBag.Message = "Unsucessfull";
ModelState.Clear();
}
return RedirectToAction("SubRoles");
}
catch
{
throw;
}
}
public ActionResult UpdateSubRoles(SubrolesObj objrmod)
{
return RedirectToAction("Roles");
}
public ActionResult DeleteSubRoles(SubrolesObj objrmod)
{
return RedirectToAction("Roles");
}
}
}
here is my view
@model CghPortal.Models.SubrolesObj
@{
ViewBag.Title = "Roles";
Layout = "~/Views/Shared/Admin.cshtml";
}
@Styles.Render("~/MainContent/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css")
<section class="content-header">
<h1>
User Roles
<!-- <small>Preview</small> -->
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
<li><a href="#">Manage users</a></li>
<li class="active">User roles</li>
</ol>
</section>
<br>
<div class="modal fade" id="modal-subrole">
<div class="modal-dialog">
<div class="modal-content">
<div class="box-header with-border">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h3 class="box-title">Add New Sub Role</h3>
</div>
<div class="modal-body">
<div class="box box-primary">
@using (Html.BeginForm("InsertSubRoles", "Roles", FormMethod.Post))
{
<div class="box-body">
<div class="col-md-8">
<div class="form-group">
@Html.LabelFor(model => model.SubRoleName, new { @for = "subrole" })<span>*</span>
@Html.TextBoxFor(model => model.SubRoleName, new { @class = "form-control", @id = "subrole", @placeholder = "Sub Role Name", @Required = "required" })
</div>
</div>
<div class="clearfix"></div>
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.MainRole, new { @for = "MainRole" })<span>*</span>
</div>
</div>
<div class="clearfix"></div>
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.status, new { @for = "roleStatus" })<span>*</span>
@Html.DropDownListFor(model => model.status, new[]{
new SelectListItem(){ Text = "Active", Value = "1" , Selected=true},
new SelectListItem(){ Text = "In-Active", Value = "0",Disabled=true}
}, new { @class = "form-control", style = "cursor: pointer;" })
</div>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="button" class="btn btn-default pull-right" data-dismiss="modal">Close</button>
</div>
}
</div>
</div>
</div>
</div>
</div>
<button type="button" class="btn btn-primary pull-right" data-toggle="modal" data-target="#modal-subrole" style="margin-right:20px; ">
Add New Sub Role
</button>
<br><br>
<section class="content">
<div class="row">
<div class="col-xs-12">
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Sub Roles List</h3>
</div>
<!-- /.box-header -->
<div class="box-body">
<table id="example2" class="table table-bordered table-striped">
<thead>
<tr>
<th>Sl no</th>
<th>Main Role Name</th>
<th>Sub Role Name</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@{ int i = 0; }
@foreach (var item in Model.subrolesList)
{
<tr>
<td> @(i += 1)</td>
<td>@Html.DisplayFor(module => item.MainRole)</td>
<td>@Html.DisplayFor(module => item.SubRoleName)</td>
<td>@Html.DisplayFor(module => item.status)</td>
</tr>
}
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<!-- /.box-body -->
</div>
<!-- /.box -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</section>
@Scripts.Render("~/MainContent/bower_components/jquery/dist/jquery.min.js")
<!-- jQuery UI 1.11.4 -->
@Scripts.Render("~/MainContent/bower_components/jquery-ui/jquery-ui.min.js")
@Scripts.Render("~/MainContent/bower_components/datatables.net/js/jquery.dataTables.min.js")
@Scripts.Render("~/MainContent/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js")
<script>
$(function () {
$('#example1').DataTable()
$('#example2').DataTable({
'paging': true,
'lengthChange': true,
'searching': true,
'ordering': true,
'info': true,
'autoWidth': true
})
})
</script>
@if (ViewBag.Message != null)
{
<script>
$(function () {
alert("@ViewBag.Message");
});
</script>
}
<script type="text/javascript">
function CheckAvailability(id) {
$.ajax({
type: "POST",
url: "/Roles/GetMainRolesById",
data: '{ID: "' + id + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if(response)
{
$('#rid').val(response.Id);
$('#rolenameEd').val(response.RoleName);
$('#statusEd').val(response.status);
//$('#modal-Update').show();
$('#modal-Update').modal('show');
}
}
});
};
</script>