Прежде чем я начну, я относительно новичок в программировании и должен был начать свою первую младшую роль в будущем, поэтому мой текущий уровень квалификации довольно базовый c.
Я создаю персональное C# ASP. NET MVC веб-приложение для отслеживания музыкальных c событий, к которым пользователи go обращаются, и исполнителей, которые играют на этих событиях, а также артистов, которых видит пользователь. Все это делается пользователем, вручную добавляющим события из индексированного представления всех событий в базе данных (SQL Сервер), что показано на изображении, связанном ниже.
https://i.stack.imgur.com/HOUGG.png
Действие контроллера:
public ActionResult GetEvents()
{
return View(_trackerService.GetEvents());
}
Разметка для вида:
@model IEnumerable<Tracker.Data.tbl_events>
@{
ViewBag.Title = "GetEvents";
}
<h2>GetEvents</h2>
<p>
@Html.ActionLink("Create New", "CreateEvent")
</p>
<table class="table">
<tr><h2>Upcoming Events</h2>
<th>
@Html.DisplayNameFor(model => model.Event_ID)
</th><th>
@Html.DisplayNameFor(model => model.Event_Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Event_Date)
</th>
<th>
@Html.DisplayNameFor(model => model.Event_Location)
</th>
</tr>
@foreach (var item in Model.Where( x => x.Event_Date >= System.DateTime.Now).OrderBy(x => x.Event_Date))
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Event_ID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Event_Name)
</td>
<td>
@Convert.ToString(string.Format("{0:dd/MM/yyyy}", item.Event_Date)) @*Converts the DateTime data type that ASP.NET uses by default into a string with the format of Date Only (https://stackoverflow.com/a/34990313/12764653)*@
</td>
<td>
@Html.DisplayFor(modelItem => item.Event_Location)
</td>
<td>
@*@Html.ActionLink("Edit", "Edit", new { id = item.Event_ID }) | *@
@Html.ActionLink("Details", "GetEventDetails", new { Event_ID = item.Event_ID }) |
@Html.ActionLink("Lineup", "../Event/GetLineup", new { Event_ID = item.Event_ID, Event_Name = item.Event_Name }) |
@if ((System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{@*Checks to see if there is a current user*@
@Html.ActionLink("Add to my Events", "../Event/AddToUser", new { User_ID = Convert.ToString(System.Web.HttpContext.Current.User.Identity.GetUserId()).GetHashCode(), Event_ID = item.Event_ID })}
@*@Html.ActionLink("Delete", "Delete", new { id = item.Event_ID })*@
</td>
</tr>
}
</table>
Один раз пользователь добавляет событие в свой профиль, он создает запись в базе данных с полями (связаны ниже):
https://i.stack.imgur.com/YQqHT.png
Метод контроллера для Функция «Добавить в мои события» функция:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult AddToUser(tbl_eventhistory _event)
{
try
{
_trackerService.AddToUser(_event);
return RedirectToAction("GetEvents");
}
catch
{
return View();
}
}
Я понимаю, что при нынешнем состоянии это, скорее всего, должно быть сделано либо в контроллере, либо в представлении, и это будет сделано, чтобы проверить 'tbl_eventhistory', чтобы увидеть, существует ли запись с текущими пользователями User_ID и конкретным c Event_ID, однако я не уверен, как на самом деле это сделать, поэтому любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Показанная таблица является индексированным представлением 'tbl_events'. Когда пользователь добавляет событие в свой профиль из этого представления, он создает запись в другой таблице с именем «tbl_eventhistory», используя параметры для этого указанного события c, которое связано через внешний ключ в Event_ID (PK tbl_event) , Когда пользователь добавляет событие в tbl_eventhistory, я хочу удалить ссылку «Добавить к пользователю» из представления только для этого указанного c события.