Asp.net mvc 在MVC asp.net中保存多对多
我读了很多关于MVC的书。但到目前为止,还没有明确的答案如何处理多对多关系,因为这些教程的许多结果都有相同的错误。Asp.net mvc 在MVC asp.net中保存多对多,asp.net-mvc,ado.net,entity-framework-6,Asp.net Mvc,Ado.net,Entity Framework 6,我读了很多关于MVC的书。但到目前为止,还没有明确的答案如何处理多对多关系,因为这些教程的许多结果都有相同的错误。 我使用的是数据库优先的方法,我的应用程序应该添加用户,在添加用户时,我应该有一个来自角色的列表,我可以将这些角色添加到该用户,或者相反,我可以有带有用户列表和编辑的角色,正如我们所知,当我向ado.net添加带有中断表的数据库时,关系将是多对多。 我已成功添加角色列表,但当我按save时,出现了空引用异常。 这是我的代码: 首先是自定义视图: namespace UserMangm
我使用的是数据库优先的方法,我的应用程序应该添加用户,在添加用户时,我应该有一个来自角色的列表,我可以将这些角色添加到该用户,或者相反,我可以有带有用户列表和编辑的角色,正如我们所知,当我向ado.net添加带有中断表的数据库时,关系将是多对多。
我已成功添加角色列表,但当我按save时,出现了空引用异常。
这是我的代码:
首先是自定义视图:
namespace UserMangment.ViewModel
{
public class RolesViewMode
{
public tab_OnlineUsers OnlineUsers { get; set; }
public IEnumerable<SelectListItem> AllRolesnames { get; set; }
private List<string> _selectedRolesname;
public List<string> SelectedRoleTags
{
get
{
if (_selectedRolesname == null)
{
_selectedRolesname = OnlineUsers.tab_OnlineRoles.Select(m => m.Id).ToList();
}
return _selectedRolesname;
}
set { _selectedRolesname = value; }
}
}
}
最后,创建视图:
@model UserMangment.ViewModel.RolesViewMode
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>tab_OnlineUsers</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.OnlineUsers.Id, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.Id, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.Id, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.EmailConfirmed, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.EmailConfirmed)
@Html.ValidationMessageFor(model =>model.OnlineUsers.EmailConfirmed, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PasswordHash, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.PasswordHash, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.PasswordHash, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.SecurityStamp, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.SecurityStamp, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.SecurityStamp, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.PhoneNumber, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PhoneNumberConfirmed, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.PhoneNumberConfirmed)
@Html.ValidationMessageFor(model =>model.OnlineUsers.PhoneNumberConfirmed, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.TwoFactorEnabled, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.TwoFactorEnabled)
@Html.ValidationMessageFor(model =>model.OnlineUsers.TwoFactorEnabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.LockoutEndDateUtc, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.LockoutEndDateUtc, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.LockoutEndDateUtc, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.LockoutEnabled, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.LockoutEnabled)
@Html.ValidationMessageFor(model =>model.OnlineUsers.LockoutEnabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.AccessFailedCount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.AccessFailedCount, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.AccessFailedCount, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.UserName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.UserName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.AllRolesnames, "Roles Name", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.ListBoxFor(m => m.SelectedRoleTags, Model.AllRolesnames)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
}
@model usermanagement.ViewModel.RolesViewMode
@{
ViewBag.Title=“创建”;
}
创造
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
tab_在线用户
@Html.ValidationSummary(true,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.Id,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.Id,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.Id,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.Email,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.Email,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.Email,“,新{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.EmailConfirmed,htmlAttributes:new{@class=“control label col-md-2”})
@Html.EditorFor(model=>model.OnlineUsers.emailconfirm)
@Html.ValidationMessageFor(model=>model.OnlineUsers.EmailConfirmed,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.PasswordHash,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.PasswordHash,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.PasswordHash,“,新的{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.SecurityStamp,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.SecurityStamp,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.SecurityStamp,“,新的{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.PhoneNumber,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.PhoneNumber,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.PhoneNumber,“,新的{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.phonenumberconfirm,htmlAttributes:new{@class=“control label col-md-2”})
@Html.EditorFor(model=>model.OnlineUsers.phonenumberconfirm)
@Html.ValidationMessageFor(model=>model.OnlineUsers.PhoneNumberConfirmed,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.twofacturenabled,htmlAttributes:new{@class=“control label col-md-2”})
@EditorFor(model=>model.OnlineUsers.TwoFactorEnabled)
@Html.ValidationMessageFor(model=>model.OnlineUsers.twofacturenabled,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.LockoutEndDateUtc,htmlAttributes:new{@class=“control label col-md-2”})
@EditorFor(model=>model.OnlineUsers.LockoutEndDateUtc,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.LockoutEndDateUtc,“,new{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.LockoutEnabled,htmlAttributes:new{@class=“control label col-md-2”})
@Html.EditorFor(model=>model.OnlineUsers.LockoutEnabled)
@Html.ValidationMessageFor(model=>model.OnlineUsers.LockoutEnabled,“,新{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.AccessFailedCount,htmlAttributes:new{@class=“control label col-md-2”})
@EditorFor(model=>model.OnlineUsers.AccessFailedCount,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.AccessFailedCount,“,新{@class=“text danger”})
@LabelFor(model=>model.OnlineUsers.UserName,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.OnlineUsers.UserName,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OnlineUsers.UserName,“,新{@class=“text danger”})
@model UserMangment.ViewModel.RolesViewMode
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>tab_OnlineUsers</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.OnlineUsers.Id, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.Id, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.Id, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.EmailConfirmed, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.EmailConfirmed)
@Html.ValidationMessageFor(model =>model.OnlineUsers.EmailConfirmed, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PasswordHash, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.PasswordHash, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.PasswordHash, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.SecurityStamp, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.SecurityStamp, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.SecurityStamp, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.PhoneNumber, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.PhoneNumberConfirmed, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.PhoneNumberConfirmed)
@Html.ValidationMessageFor(model =>model.OnlineUsers.PhoneNumberConfirmed, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.TwoFactorEnabled, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.TwoFactorEnabled)
@Html.ValidationMessageFor(model =>model.OnlineUsers.TwoFactorEnabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.LockoutEndDateUtc, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.LockoutEndDateUtc, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.LockoutEndDateUtc, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.LockoutEnabled, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model =>model.OnlineUsers.LockoutEnabled)
@Html.ValidationMessageFor(model =>model.OnlineUsers.LockoutEnabled, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.AccessFailedCount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.AccessFailedCount, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.AccessFailedCount, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model =>model.OnlineUsers.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model =>model.OnlineUsers.UserName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model =>model.OnlineUsers.UserName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.AllRolesnames, "Roles Name", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.ListBoxFor(m => m.SelectedRoleTags, Model.AllRolesnames)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
}