Vra

Ek is die lewering van 'n gemeenskaplike Login vorm met behulp van Html.RenderAction, op elke bladsy van my site.

As die gebruiker 'hul besonderhede in die teks-box en kliek op "Stuur", is dit nie 'n pos aan 'n kontroleerder dat die log in handvatsels.

As hulle 'n fout gemaak het, soos die invoer van 'n geldige e-posadres te maak, dit sal die ModelState vul met 'n fout boodskap en dan lei terug na wat ookal bladsy was hulle op voor.

Die probleem is, want RenderAction voorkom as 'n afsonderlike versoek, ek verloor die ViewModel.

Selfs wanneer ek sit dit in TempData dit verlore, aangesien TempData is gespoel op elke afsonderlike versoek.

Is daar 'n manier van die behoud van data tussen opeenvolgende Html.RenderAction oproepe?

Indien nie, enige voorstelle oor hoe ek dalk in staat wees om hierdie hack? (Indien die data in Sessie sit?)

Was dit nuttig?

Oplossing

Hier is wat ek vir die oomblik gedoen het. (Dit is waarskynlik nie die mees ideale oplossing.)

Ek het 'n 'PreserveViewDataAttribute', wat ek op enige aksie waarvoor ek wil die ViewData in die sessie te bewaar.

In my BaseController, ek overrode die "Redirect 'n metode met my eie metode, wat die volgende doen.

  1. Kry 'n verwysing na die Aksie metode wat dit genoem ( 'n bietjie van die beraad hier)

  2. Tjeks as hierdie metode het die 'PreserveViewDataAttribute' gedefinieer daarop

  3. As dit die geval is, afskrifte van die huidige ViewData om 'n sessie veranderlike. (Die etiket van die veranderlike is dieselfde as die huidige aksie naam, met '_ViewData' geryg op die einde.)

  4. In beide gevalle, noem die basis Redirect metode.

Toe geskep ek 'n eiendom in die BaseController genoem 'PreservedViewData', wat die ViewData terug in sitting is nie, om die huidige aksie betrokke. (Of opgawes nul indien nie gevind).

So, om ViewData solank as wat ek wil, ek moet net versier my optrede met 'PreserveViewDataAttribute', en dan bel 'PreservedViewData' wanneer ek dit nodig het te bewaar.

Laat my weet as jy die bron-kode wil hierdie.

Ander wenke

Jy mag dalk graag hierdie Post-Redirect-Kry benadering artikel se deur Kazi Rashid.

http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx#prg

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top