Как вы написали здесь, похоже, что EventId может быть установлен клиентом свободно (без каких-либо ограничений безопасности), просто перейдя к GET /JoinEvent?id=100
.
Если безопасность не является проблемой, вы можете сделать это многими разными способами
Передача идентификатора события клиенту, который, в свою очередь, вернет его на сервер. Как? Вот один из способов
- Передача его как части модели EventPerson, для которой вам потребуется добавить новое свойство внутри этой модели.ActionResult должен:
return View(new EventPerson { EventId: id })
- Украшать верхнюю строку представления (после импорта отчетов) следующим
@model EventPerson
, это скажет представлению, что теперь он представляет этот тип.(Который был передан действием GET) Теперь мы должны решить, хотим ли мы передать его обратно на сервер в качестве параметра строки запроса или параметра body?Поскольку мы выполняем семантическое действие «Вставить», в большинстве случаев практика просит нас передать его как часть тела.таким образом, вы должны использовать скрытое текстовое поле для передачи параметра EventId.
@Html.Hidden("EventId", @model.EventId))
"EventId" - это свойство, которое мы хотимпривязать на нашем POST-сервере действие EventPerson
новое свойство.(Точка # 1)
@model.EventId - это значение, которое мы взяли с сервера и передали в представление (Точка # 2)