Я не знаю, правильно ли я поступаю, но в основном я создаю приложение 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>
, когда они выбирают, зарегистрируйтесь рядом с событием, которое они будут посещать sh, оно приведет их к этому действию. Я создал модель представления с именем "MemberEventViewModel, в которой есть член и событие в нем.
public ActionResult SignUpEvent(int id)
{
var Vmodel = new MemberEventViewModel()
{
};
return View(Vmodel);
}
возвращаемое представление - это когда член вводит свой пин-код
@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, была создана, когда я создал отношение «многие ко многим» между Событиями и Участниками.
также здесь представлен мой класс модели View
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; }
}