Asp.net mvc předávání objektu do controlleru – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Asp.net mvc předávání objektu do controlleru – .NET – Fórum – Programujte.comAsp.net mvc předávání objektu do controlleru – .NET – Fórum – Programujte.com

 

ondra
~ Anonymní uživatel
244 příspěvků
3. 12. 2014   #1
-
0
-

Dobrý den,

jsem začátečník v asp.net mvc a koumám jestli je možné předat kontroleru objekt. Uvedu příklad.

Mám stránku kde je detailní výpis zákazníka a je tam odkaz vypsat objednávky zákazníka. Když kliknu na objednávky zákazníka tak bych aby se v novém view vypsaly objednávky zákazníka + někde nahoře jméno, příjmení a telefon zákazníka. Ale zákazníka jsem na předchozím view načetl a nechci ho tedy načítat z db znovu. Je možné předat objekt zákazníka do Controleru? 

Zatím předávám všechno pomocí Get metody v odkazu a jiný způsob mně není znám. 

Děkuju za radu

Nahlásit jako SPAM
IP: 2001:718:1001:700:200:5ef...–
ingiraxo+15
Grafoman
3. 12. 2014   #2
-
0
-

Controller by měl správně spravovat určitý usecase (editace, vytvoreni, nahled,...), někdy se tohle všechno spojuje do jednoho controlleru (hlavně u menších app)

Ovšem není problem z controlleru zavolat jiný view z jineho controlleru a predat mu data se kterýma má pracovat

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
ondra
~ Anonymní uživatel
244 příspěvků
3. 12. 2014   #3
-
0
-

#2 ingiraxo

No já sem spíš chtěl vědět jak

Nahlásit jako SPAM
IP: 2001:718:1001:700:200:5ef...–
m4r100
Návštěvník
3. 12. 2014   #4
-
0
-

#1 ondra
Chtelo by to aspon trochu kodu, aby bylo na cem ukazovat.

HTTP je bezestavove, to znamena, ze si musis ty data posilat mezi controllerem a view (tam a zpet). Jeden ze zpusobu je posilat z controlleru nejaky objekt ViewModel (nebo Model) a pri akci posilat tento objekt zpet.

Napr. mas tridu Zakaznik, ktera jenom drzi data:

class Zakaznik
{
	public int Id {get; set;}
	public string Jmeno {get; set;}
}

Ve svem controlleru v nejake metode vracis View s objektem teto tridy (nacten z DB). V tomto View musis pouzit vsechny property, ktere chces pozdeji poslat zpatky do controlleru. Takze pouzijes pomocne metody: @Html.TextBoxFor(x => x.Jmeno) a ty vlastnosti, ktere nechces zobrazovat ulozis do toho View pomoci @Html.HiddenFor(x => x.Id). Tyto html tagy obalis do <form> s nejakou akci z controlleru, ktera bude prijimat objekt Zakaznik (napr. metoda ZobrazitObjednavky(Zakaznik z){..}) a jeste do toho formu pridas tlacitko.

Po stisknuti tlacitka ASP.NET pro tebe automaticky vytvori objekt Zakaznik, naplni jeho vlastnosti hodnotami z View (diky tem metodam -Neco-For(x =>  x.Neco)) a preda rizeni metode ZobrazitObjednavky. Tam dostanes objekt Zakaznik i s jeho Id a muzes vesele nacitat objednavky z DB (ale uz nemusis jeho Jmeno).

Nahlásit jako SPAM
IP: 94.112.137.–
JardaJirava0
Stálý člen
8. 12. 2014   #5
-
0
-

Ahoj,

  předat objekt kontroleru, záleží jak to uchopíš. Jedna z možností je ta, kterou uvedl m4r10 ve své odpovědi, což může být zajímavé při menších objektech a v okamžiku, kdy výš, že nikdo jiný s daným objektem nepracuje.

  Většinou se však předává pouze jednoznačný identifikátor objektu, který se následně použije ve volané metodě pro vytažení dat z úložiště (záměrně nepíši databáze, neboť tím úložištěm může být třeba cache).

  Taktéž je dobrým zvykem vyčítat pouze to, co je potřeba. Pokud tedy na jedné stránce máš jen přehled zákazníků, tak na detailu budeš mít zřejmě více informací a budeš muset načíst více.

  Tudíž, "sáhnout" si do databáze znovu není hřích, jde spíše o to, tento process udělat co nejrychlejší.

  Pěkný den,

Nahlásit jako SPAM
IP: 77.78.85.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

ASP.NET MVC Last login — založil kironet

Předávání parametrů v url (asp.net) — založil Anonymní uživatel

ASP.NET MVC Validace datumu — založil Daiuqiri

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý