如何解决此错误的新手:传递到字典中的模型项的类型为'System.Collections.Generic.List`1 []
我对ASP.NET MVC和C#还是很陌生。我的最后一年的项目要求我使用ASP.NET MVC c#编写一个Web应用程序。如果您能帮助这个新手,我将不胜感激。
我一直收到此错误,但似乎无法弄清楚该错误或如何解决:
传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [test2.Models.UsersModel]',但是此字典需要类型为'test2.Models.user_account的模型项'。
这是我的控制器:
use Cake\Http\Cookie\Cookie;
// ...
public function beforeFilter(Event $event)
{
// ...
$guestID = $this->request->getCookie('guestCookie');
if(!$guestID) {
$guestID = Text::uuid();
$cookie = Cookie::create('guestCookie',$guestID,[
'expires' => new DateTime('+1 days'),'http' => true,]);
$this->response = $this->response->withCookie($cookie);
}
$this->guestCookie = $guestID;
// ...
}
public function error()
{
// ...
$cookie = new Cookie('guestCookie');
$this->response = $this->response->withExpiredCookie($cookie);
// ...
}
// ...
我的索引-是的,我试图使用一个下拉列表作为roleName,以便我只能从该下拉列表中分配用户的角色,但它不起作用
using System.Net;
using System.Web;
using System.Web.Mvc;
using test2.Models;
using System.Runtime.InteropServices;
using System.Net.Http;
using System.Runtime.InteropServices.WindowsRuntime;
namespace test2.Controllers
{
//Admin page show be able to manage role
public class AdminController : Controller
{
public ActionResult Index() {
ubdcsEntities dc = new ubdcsEntities();
var userRoles = (from user in dc.user_account
select new {
UserId = user.userID,Username = user.username,EmailID = user.emailID,RoleName = (from userRole in dc.userRoles
join role in dc.role1 on userRole.roleID
equals role.roleID
select role.roleName).ToList()
}).ToList().Select(p => new UsersModel()
{
Username = p.Username,EmailID = p.EmailID,RoleName = p.RoleName.ToString()
}).ToList();
return View(userRoles);
}
}
}
我的模特:
@model IEnumerable<test2.Models.UsersModel>
@{
ViewBag.Title = "Users With Roles";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="box-title">
<b>Users with Roles</b>
</h3>
</div>
<!-- /.box-header -->
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed" id="UsersWithRoles">
<thead>
<tr>
<td><b>Username</b></td>
<td><b>Email</b></td>
<td><b>Roles</b></td>
</tr>
</thead>
@foreach (var user in Model)
{
<tr>
<td>@user.Username</td>
<td>@user.EmailID</td>
<td>
@user.RoleID
@*Html.DropDownListFor(user => user.FirstOrDefault().RoleName,new SelectList(new[]{"Admin","Student","Counselor"}))*@
</td>
</tr>
}
</table>
</div>
<div class="panel-footer">
<p class="box-title"><b>Total Users till @String.Format("{0 : dddd,MMMM d,yyyy}",DateTime.Now) : </b><span class="label label-primary">@Model.Count()</span></p>
</div>
</div>
@section scripts{
<script>
$(function () {
$('#UsersWithRoles').DataTable({
"paging": true,"lengthChange": true,"searching": true,"ordering": true,"info": true,"autoWidth": true
});
});
</script>
} v>
下面是数据库中的模型(用户帐户)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace test2.Models
{
public partial class UsersModel
{
public int UserID { get; set; }
public string Username { get; set; }
public string EmailID { get; set; }
public int RoleID { get; set; }
public string RoleName { get; set; }
}
}
使用@ model.test2.models.user_account的视图-用户注册
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace test2.Models
{
using System;
using System.Collections.Generic;
public partial class user_account
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCallOverridableMethodsInConstructors")]
public user_account()
{
this.calendars = new HashSet<calendar>();
}
public int userID { get; set; }
public string username { get; set; }
public string emailID { get; set; }
public string password { get; set; }
public int roleID { get; set; }
public virtual user_emergency user_emergency { get; set; }
public virtual user_profile user_profile { get; set; }
public virtual user_record user_record { get; set; }
public virtual counselor_account1 counselor_account1 { get; set; }
public virtual userRole userRole { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<calendar> calendars { get; set; }
public virtual role1 role { get; set; }
}
}
家庭控制器
@model test2.Models.user_account
@{
ViewBag.Title = "Signup";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Sign in</h2>
<div>
@using (Html.BeginForm("Signup","Home"))
{
<div style="color:red;">@Html.ValidationSummary()</div>
<!--Show details are saved successfully message-->
<div class="col-lg-12">@ViewBag.Message</div>
<br />
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true,"",new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.username,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.username,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.username,new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.emailID,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.emailID,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.emailID,new { @class = "text-danger" })
@Html.ValidationMessage("EmailExist",new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.password,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.password,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.password,new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ConfirmPassword,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ConfirmPassword,new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ConfirmPassword,new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Register" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Login","Index","Home")
</div>
</div>
@section Scripts{
<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。