Wpis z mikrobloga

#programowanie #aspnet #webdev Cześć, pytanko dotyczące ASP.NET, mianowicie chodzi mi o długość życia modeli. Żeby to lepiej zrozumieć, to sobie dałem następujący przykład. Mamy kontroler "Testowy" z dwoma metodami:http://prntscr.com/hbnn71
Do klasy FinalOrder wrzucamy nasz model samochodu, całość przekazujemy do widoku.
http://prntscr.com/hbnnpv W widoku chcielibyśmy dodać jakieś nowe właściwości do naszego modelu, być może poprawić stare. (W tym miejscu, w trybie debugowania w Modelu cały czas widoczny jest obiekt Car z prawidłowo ustawionymi wartościami z kontrolera).
Całość przekazana została do HttpPost, a z tego kontrolera wrzucona na kolejny widok : http://prntscr.com/hbnope

Problem tylko w tym że na poziomie tego kontrolera HttpPost przestaje być widoczne wszystko co nie zostało ustawione w poprzednim kontrolerze. Może ktoś mi wyjaśnić w miarę logicznie dlaczego samochód zaginął i co zrobić żeby można było przekazać go dalej (,) ?
  • 7
  • Odpowiedz
@DrizztDoUrden: Metoda POST nie wie, co metoda GET wysłała do widoku. Jak sobie otworzysz kod html swojej strony z formularz do updejtu modelu samochodu, to zobaczysz że to jest po prostu wygenerowany z różnymi polami. Z formularza wysłane na serwer (czyli do twojej metody typu POST w controllerze) te elementy, które dodasz w formularzu.
W tle dokonuje się modelbinding, tzn przypisanie wysłanych przez Ciebie danych na klasę C#
  • Odpowiedz
@Priya: W ten sposób? @Html.HiddenFor(Model.car.Model) i tak dalej dla wszystkich
Pojawia się błąd: http://prntscr.com/hbo2tq

Dla wyrażenia lambda @Html.HiddenFor(model => model.car) przechodzi, ale samochód dalej nie jest widoczny w metodzie POST :/

EDIT: Dobra, za łatwo chciałem, nie da się przekazać całego obiektu, trzeba pojedyncze pola jak zresztą wspomniałeś. Dziękuje za pomoc, już gra i buczy ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Priya: Okk, starałem się to ogarniać metodą prób i błędów tworząc przykładowy projekt ale pojawiają się właśnie tego typu problemy które ciężko przeskoczyć ;) Ale skoro tak to, po skończeniu projektu spróbuję jeszcze raz do niej podejść. Być może z delikatnie większym obyciem w asp.net pójdzie nieco lepiej ( ͡° ͜ʖ ͡°)
  • Odpowiedz