【发布时间】:2020-04-18 19:39:44
【问题描述】:
我不知道我是否以正确的方式进行此操作,但基本上我正在为一个俱乐部创建一个 MVC 应用程序,其中我有一个 Members 类和一个 Events 类。我有一个显示下面所有事件的视图
@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>
当他们选择,在他们希望参加的活动旁边注册时,它会将他们带到此操作。我创建了一个名为“MemberEventViewModel 的视图模型,其中包含一个成员和一个事件。
public ActionResult SignUpEvent(int id)
{
var Vmodel = new MemberEventViewModel()
{
};
return View(Vmodel);
}
返回的视图是成员输入其 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>
}
然后最后转到这个控制器,这样我就可以保存并查看成员已注册的事件
[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);
MemberinDB.Events.Add(EventinDB);
EventinDB.Members.Add(MemberinDB);
return View("ViewEvents", "User");
我对如何使它工作感到困惑。我想查看会员注册了哪些活动,反之亦然。当我在事件和成员之间创建多对多关系时,创建了一个名为 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; }
}
和成员类
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; }
}
【问题讨论】:
-
您好,您会包含您的 MemberEventViewModel 类及其属性吗?谢谢
-
是的,我能做到
-
哦,还有MemberEvents课!谢谢。澄清一下,您想在提交后保存到 MemberEvents 表吗?您是否在 SignUp Post 上获得价值?
-
哦,MemberEvents 还没有在数据库中?你在使用代码优先吗?
-
所以基本上我有一个带有成员集合的事件类,然后我有一个带有事件集合的成员类。我希望能够查看会员注册了哪些活动,以及哪些会员注册了特定活动。而且我能够将事件 ID 传递给 signupevent 视图,但之后我得到空值。是的,我首先使用代码
标签: c# asp.net-mvc entity-framework model-view-controller ef-code-first