Mam akcję tworzenia, która nie wysyła akcji CreateOn i CreatedBy z powrotem do akcji tworzenia HttpPost.
Nie są to właściwości definiowane przez użytkownika orazidealnie nie chcę, aby były w ogóle wyświetlane w formularzu. Więc jak mogę wprowadzić te właściwości do modelu, nie mając ich w samym formularzu? Czy powinny to być ukryte pola w formularzu?
Kontroler
public virtual ActionResult Create()
{
var meeting = new Meeting
{
CreatedOn = DateTime.Now,
CreatedBy = User.Identity.Name,
StartDate = DateTime.Now.AddMinutes(5),
EndDate = DateTime.Now.AddHours(3)
};
ViewBag.Title = "Create Meeting";
return View(meeting);
}
[HttpPost]
public virtual ActionResult Create(Meeting meeting)
{
if (ModelState.IsValid)
{
_meetingRepository.InsertOrUpdate(meeting);
_meetingRepository.Save();
return RedirectToAction(MVC.Meetings.Details(meeting.MeetingId));
} else {
return View();
}
}
Odpowiedzi:
2 dla odpowiedzi № 1Czy powinny to być ukryte pola w formularzu?
Tak, to zdecydowanie jeden dobry sposób na ich przekazanie. Pamiętaj, że nie jest to bezpieczne, ponieważ użytkownik może sfałszować żądanie POST i zmodyfikować je, ale może to być OK w twoim scenariuszu.
Więc jeśli potrzebujesz bezpieczeństwa, innym sposobem jest ponowne pobranie ich ze magazynu danych, ponieważ użytkownik nie może ich zmodyfikować w tym formularzu, aby się nie zmienił.