Diskuze: Pojmenování akce
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jinými slovy, potřebuješ přesměrovat z SendError zpět na Detail, že jo?
Myslím, že ukázka tvého kódu by určitě pomohla k rychlejšímu řešení...
Dobrá přikládám kód. A ano jde mi o přesměrování, ale včetně validačních hlášek. Následující kód funguje jenom je špatně URL no v liště.
public ActionResult SendReport(SportModel model)
{
if(ModelState.IsValid)
{
.... //Odeslání emailu
return RedirectToAction("Detail", "Sport", new { id = Model.ID });
} else
{
return View("~/Views/Sport/Detail.cshtml", model);
}
}
public ActionResult Detail(int id)
{
return AsView(Model);
}
Tak to mi toho moc neprozradilo. Co si vlastně představuješ pod tím "včetně validačních hlášek"?
Pokud proběhne vše v pořádku dojde normálně na redirect a to je ok.
Pokud ale nastane problém,
není vyplněné pole nebo špatný formát emailu. Potřebuji přesměrovat
zase na detail s validačními hláškami. Pokud použiju RedirectToAction(),
tak ztratím validace a pokud použiju to co používám View("path", Model) tak
to funguje, ale změní se mi url v liště a místo
localhost/Sport/Detail/1234 mám localhost/Sport/SendReport
Nevím, jak to máš nastavené, ale já používám nastavení validací z ViewModelu a následně v Controlleru nepotřebuji už validaci kontrolovat. Pokud se něco nepovede udělám jen
return View(model);
a vrátím se zpět do modelu, ze kterého byla akce volána. Typicky používám stejně pojmenovaný ActionResult pro zobrazení i pro samotnou akci, jen ten akční je s atributem
[HttpPost]
Pokud ti jde o to, abys uchoval informace z formulare v jednom view a predal je do jineho view, tak si pro tuto akci udelej proste viewmodel nebo nejake DTO, to napln pozadovanymi daty a predej ho prislusnemu view.
Pokud to neni ono, pak nechapu o co ti vlastne jde.
Ale vždyť já to tak dělám také. Problém ale je, že tady by se mi to vrátilo do view SendReport a to nechci chci aby se mi to vrátilo do Detail. Což udělám jak jsem psal ale ta url je prostě blbá.
dříve jsem také měl stejný problém. Aktuálně nikdy nepoužívám
return View("~/Views/cokoliv", model);
A těchto problémů jsem se zbavil. Chápu správně, že máš 2 akce na jedné stránce?
Pokud ano, tak vždy posílej request na stejnou Akci v kontroleru, jen s
POST atributem. V té akci si rozliš, zda uživatel chce SendReport či něco
jiného. Případně se mu vrátí validační hlášky a budeš mít správnou
url
Jasný takhle mě to taky napadlo jenom mě štve, že to bude takhle "prasácky". Ale chápu že to nejspíše jinak nepůjde.
Tak zas tak beznadějný to není, můžeš si odesílat data na SendReport a v případě že se potřebuješ "vrátit" i s daty na stránku detailu si můžeš data formuláře poslat do detailu pomocí TempData do dalšího Actionu. TempData vydrží jedno "přenačtení" / přesměrování.
Omlouvám se, snad mě neukamenujete - ale co je to prasácký kód ?
Výše není myšleno špatně, jen se snažím ukázat na fakt, že např. u
jednorázovky (pomocný nástroj pro vývoj, který je naprogramován za hodinku
a nebude se dál rozvíjet, prasácký kód nevadí:)
Naopak pokud se vyvíjí dlouhodobě nějaký projekt - je důležitý čas,
spokojený zákazník a výhled do budoucna. Lepší je dělat rozkouskovaný
kód, který je znovupoužitelný i v jiných programech a pravidelné realease
verzí ve větvích, zpětně kompatibilní revize knihoven apod. Občas prostě
není možné stihnout vše hned, důležité je, aby bylo alespoň něco dle
plánu, co je použitelné. A hlavně splynutí s týmem a dodržování
koncepce týmu nebo celé firmy. Jinak se v tom prostě nikdo nevyzná.
Nikdy nejsou 100% ideální řešení, i když jsem se setkal s názorem, že
vždy existuje pouze jedno nejlepší řešení - to samotné je věc pohledu.
Ideální řešení může být řešení s největší pravděpodobností
úspěchu < 100% v daném pohledu.
Svět si myslím je relativní, co je z jednoho pohledu dobře, je z jiného
špatně.... A za dva dny je to jinak
To jen můj malý postřeh... Třeba někomu pomůže a třeba ten dotyčný
otevře zas nějak oči mě
Vzpomínám si, že kdysi dávno jeden programátor bral anonymní metody jako prasárnu dotnetu. Dnes je to věřím bráno jako super věc (lambda výrazy, linq), které se navíc ani nevykonají, ale pouze převedou na sql
K tomu, co se tu řeší angular/react apod + web api nebo nějaký ajax+json. by to asi řešilo čistěji. Staré odesílání přes formulář je prostě nepraktické. Líp než mvc se s ním dle mého názoru vypořádávalo staré webforms pomocí viewstate, které moc lidí rádo nemá.
Zkrátka chci říct, že občas je lepší neřešit detaily. Chybama se
člověk učí, největší chyba je nic nezkusit
Zobrazeno 16 zpráv z 16.