C# 将视图模型传递给视图,将文本框中的数据保存到视图模型中,然后将该数据从视图模型传输到“我的模型”
我不知道我这样做是否正确,但基本上我正在为一个俱乐部创建一个MVC应用程序,我有一个会员类和一个活动类。我有一个显示以下所有事件的视图C# 将视图模型传递给视图,将文本框中的数据保存到视图模型中,然后将该数据从视图模型传输到“我的模型”,c#,asp.net-mvc,entity-framework,model-view-controller,ef-code-first,C#,Asp.net Mvc,Entity Framework,Model View Controller,Ef Code First,我不知道我这样做是否正确,但基本上我正在为一个俱乐部创建一个MVC应用程序,我有一个会员类和一个活动类。我有一个显示以下所有事件的视图 @model IEnumerable<Application.Models.Event> @{ Layout = null; } <h1>Events For this Month!</h1> <table> @foreach (var events in Model) {
@model IEnumerable<Application.Models.Event>
@{
Layout = null;
}
<h1>Events For this Month!</h1>
<table>
@foreach (var events in Model)
{
<tr>
<td><h2>@events.Name</h2></td>
<td>
@Html.ActionLink("Sign-Up", "SignUpEvent", "User", new { id = events.Id }, null)
</td>
</tr>
}
</table>
返回的视图是成员输入其pin的位置
@model Application.ViewModels.MemberEventViewModel
@{
Layout = null;
}
<h2>Sign-Up</h2>
@using (Html.BeginForm("SignUp", "User"))
{
@Html.LabelFor(c => c.Member.PIN)
@Html.TextBoxFor(c => c.Member.PIN)
@Html.HiddenFor(c => c.Events.Id)
<button type="submit">Save</button>
}
我不知道该如何让它工作。我想查看会员注册的活动,反之亦然。在我创建事件和成员之间的多对多关系时,创建了一个名为MemberEvents的桥接表
这里还有我的视图模型类
public class MemberEventViewModel
{
public Member Member { get; set; }
public Event Events { get; set; }
}
这是活动课
public class Event
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
[Display(Name = "Date")]
public DateTime? EventDate { get; set; }
[Required]
[Display(Name = "Start Time")]
public TimeSpan EventStartTime { get; set; }
[Required]
[Display(Name = "End Time")]
public TimeSpan EventEndTime { get; set; }
public int EventTotalTime{ get; set; }
public virtual ICollection<Member> Members { get; set; }
}
公共类事件
{
公共int Id{get;set;}
[必需]
公共字符串名称{get;set;}
[必需]
[显示(Name=“日期”)]
公共日期时间?事件日期{get;set;}
[必需]
[显示(Name=“开始时间”)]
公共时间跨度EventStartTime{get;set;}
[必需]
[显示(Name=“结束时间”)]
公共TimeSpan EventEndTime{get;set;}
public int EventTotalTime{get;set;}
公共虚拟ICollection成员{get;set;}
}
和成员类
public class Member
{
public int Id { get; set; }
[Required]
[MaxLength(4, ErrorMessage = "PIN must be 4 numbers long"), MinLength(4, ErrorMessage = "PIN must be 4 numbers long")]
public string PIN { get; set; }
[Required]
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Date of Birth")]
public DateTime? Birthdate { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
公共班级成员
{
公共int Id{get;set;}
[必需]
[MaxLength(4,ErrorMessage=“PIN必须有4个数字长”)、MinLength(4,ErrorMessage=“PIN必须有4个数字长”)]
公共字符串PIN{get;set;}
[必需]
[显示(Name=“First Name”)]
公共字符串名{get;set;}
[必需]
[显示(Name=“Last Name”)]
公共字符串LastName{get;set;}
[显示(姓名=“出生日期”)]
公共日期时间?生日{get;set;}
公共虚拟ICollection事件{get;set;}
}
看起来您添加它的方式没有问题,但我认为您在添加MemberEvents对象后错过了context.SaveChanges()
[HttpPost]
public ActionResult SignUp(MemberEventViewModel Vmodel)
{
var EventinDB = _context.Events.SingleOrDefault(c => c.Id == Vmodel.Events.Id);
var MemberinDB = _context.Members.SingleOrDefault(c => c.PIN == Vmodel.Member.PIN);
// try using one only
MemberinDB.Events.Add(EventinDB);
// EventinDB.Members.Add(MemberinDB);
// you should save here
_context.SaveChanges();
return View("ViewEvents", "User");
}
还要确保在此处指定属性
public ActionResult SignUpEvent(int id)
{
var Vmodel = new MemberEventViewModel()
{
Member = // find the member _context.Members.Where(...)
Events = _context.Events.FirstOrDefault(e=>e.Id == id)
};
return View(Vmodel);
}
看起来您添加它的方式没有问题,但我认为您在添加MemberEvents对象后错过了
context.SaveChanges()
[HttpPost]
public ActionResult SignUp(MemberEventViewModel Vmodel)
{
var EventinDB = _context.Events.SingleOrDefault(c => c.Id == Vmodel.Events.Id);
var MemberinDB = _context.Members.SingleOrDefault(c => c.PIN == Vmodel.Member.PIN);
// try using one only
MemberinDB.Events.Add(EventinDB);
// EventinDB.Members.Add(MemberinDB);
// you should save here
_context.SaveChanges();
return View("ViewEvents", "User");
}
还要确保在此处指定属性
public ActionResult SignUpEvent(int id)
{
var Vmodel = new MemberEventViewModel()
{
Member = // find the member _context.Members.Where(...)
Events = _context.Events.FirstOrDefault(e=>e.Id == id)
};
return View(Vmodel);
}
您好,您会包括MemberEventViewModel类及其属性吗?谢谢,我能做到哦,也请参加活动课!谢谢为了澄清,是否要在提交后保存到MemberEvents表?你在注册帖子上得到值了吗?哦,MemberEvents还没有在数据库中?你是先使用代码吗?所以基本上我有一个事件类,有一个成员集合,然后我有一个成员类,有一个事件集合。我希望能够看到一个成员注册了哪些活动,以及哪些成员注册了特定活动。我可以将事件ID传递给signupevent视图,但之后会得到空值。是的,我使用的是code firstHi,您会包括MemberEventViewModel类及其属性吗?谢谢,我能做到哦,也请参加活动课!谢谢为了澄清,是否要在提交后保存到MemberEvents表?你在注册帖子上得到值了吗?哦,MemberEvents还没有在数据库中?你是先使用代码吗?所以基本上我有一个事件类,有一个成员集合,然后我有一个成员类,有一个事件集合。我希望能够看到一个成员注册了哪些活动,以及哪些成员注册了特定活动。我可以将事件ID传递给signupevent视图,但之后会得到空值。是的,我先用代码