/ / Model nie jest zapełniany na HTTPost - asp.net-mvc, asp.net-mvc-3, kontroler

Model nie został wypełniony na HTTPost - asp.net-mvc, asp.net-mvc-3, kontroler

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 № 1

Czy 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ł.