Я довольно новичок в MVC и не могу разобраться с возможной угрозой чрезмерного распространения.У меня есть модель «Событие», которая содержит свойство Id.Когда пользователь, например, хочет отредактировать существующее «событие», я использую это свойство для извлечения «события», которое мне нужно обновить из коллекции «событий».
Я попытался украсить свойство Id с помощью атрибута [BindNever] или [Editable], в результате чего свойство Id стало равным 0, поскольку свойство больше не связывается после публикации.Это, конечно, создает проблемы, когда я хочу использовать это свойство Id для извлечения «события» из коллекции.
Поэтому я оставляю свойство незадекорированным.Но это кажется неестественным, так как это свойство не должно редактироваться пользователем.Использование ViewModel не решает мою проблему, так как свойство Id все равно будет необходимо.
Во всех примерах, которые я нахожу в сети, свойство Id всегда является частью модели привязки.Представляет ли это угрозу возможной передозировки?Я предполагаю, что при работе с Entity Framework, например, свойство Id не является редактируемым, поскольку оно автоинкремментировано.Пользователь по-прежнему сможет изменить идентификатор, чтобы обновить другое «событие», но в случае моего приложения это не создает проблем, так как пользователь может редактировать любое «событие», которое он хочет
Модель:
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
}
Контроллер:
[HttpGet]
public IActionResult EditEvent(int? id)
{
if (id == null)
{
return NotFound();
}
else
{
var eventToEdit = _events.GetEvent(id.Value);
return View(eventToEdit);
}
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult EditEvent(Event postedEvent)
{
if (ModelState.IsValid)
{
if (postedEvent == null)
{
return NotFound();
}
else
{
var eventToUpdate = _events.GetEvent(postedEvent.Id);
eventToUpdate = _events.EditEvent(postedEvent, eventToUpdate);
return RedirectToAction(nameof(EventDetails), new { id = eventToUpdate.Id });
}
}
else
{
return View(postedEvent);
}
}