Dynamická Web Appl   otázka

ASP.NET WebForms

Dobrý den všem.

Mám otázku ohledně dynamických aplikací. Možná to bude začátečnický dotaz, ale zajímalo by mě, zda to lze nějak elegantněji vyřešit.

Řekněme, že mám aplikaci svázanou s databází. Databáze obsahuje třeba 100 tabulek.

Ke každé tabulce jsou v aplikaci 2 pohledy, jek se koncový uživatel dívá na data. Přehledový formulář, a detailní formulář.

Přehledový formulář je dynamicky vytvořen podle nastavení uloženém v XML souboru někde na serveru. Funguje to tak, že uživatel si nadefinuje, jaké sloupce chce v přehledu vidět, jakou mají mít šířku, jak chce data setřídit, profiltrovat, ... a to se uloží ve formátu XML na serveru. Při dalším dotazu na stránku si aplikace sáhne do tohoto souboru a podle něho vygeneruje výsledou aspx stránku.

Druhý případ (detailní formulář, reprezentující jeden záznam v tabulce) je velmi obdobný. To, jak formulář vypadá, jaké jsou v něm objekty, a ajké mají funkcionality je opět uloženo v XML souboru někde na serveru. Rozdíl je jen v tom, že detailní formulář je nadefinován administrátorem.

A teď k mé otázce: Můj problém je v tom, že nechci vytvářet 100 prázdných .aspx stránek zbytečně, protože z výše uvedeného vyplývá, že téměř všechen obsah je vytvářen za běhu aplikace, a statický zbytek je ve všech .aspx stejný. Důvodem, proč to dělám, je codebehind. U některých formulářů jsou funkcionality, které nejsou obecné, ale pouze pro tento jeden formulář.

Existuje nějaká možnost jak toto elegantněji vyřešit?

Už když si představím nějakou údržbu, nebo aktualizaci aplikace, tak budu muset otevřít každou z těch 100 .aspx a zapsat do každé to stejné...

Narazil jsem na internetu na MVC. Moc tomu nerozumím, protože česky o tom toho moc není, a když už se něco najde, nebo si něco přeložím, tak jsou k tomu dost protichůdné názory od odborníků.

Předem děkuji za vaše tipy a názory.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

MVC bych doporučil právě na uživatelské stránky,katalogy a prostě vše s čím "standardní" uživatel v rámci webu pracuje. I Vaše situace by se v MVC,dle mého,řešila pohodlněji a elegantněji. Navíc není problém kombinovat WebForms a MVC.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

generovat pro každý pohled je jistě hloupost, jak jste sám poznamenal. Dynamicky načítat data a vyřešit jejich zobrazování jde vyřešit celou řadou způsobů a je celkem jedno, jestli použijete ASP.NET WebForms nebo ASP.NET MVC, či třeba PHP.

Postup je prakticky stejný ve všech technologiích - přijmete v parametru (obvykle pro začátek doporučuji query string nebo route parameter) identifikátor "pohledu". Vy si pak data z databáze načtete a vykreslíte na stránku. Toto lze provést v každé technologii víceméně se stejnou námahou. Různé výkřiky o tom, jak je jedna technologie k ničemu a druhá je úplně báječná většinou patří lidem, kteří v dané technologii nikdy nic pořádného nenapsali nebo nejsou ochotni přijmou fakt, že na jeden problém existuje více řešení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přesně tak,máte pravdu! Já osobně jsem začínal s WebForms(v té době ještě MVC) a dlouhou dobu jsem se MVC vyhýbal.Což byla chyba,ne proto,že bych se vyhýbal přímo MVC,ale to že jsem si bránil v rozšíření obzorů i na ostatní technologie. Dnes musim říct,že jsem rád,že jsem MVC zkusil...dnes nepoužívám na generování uživatlské části webu téměř nic jiného.Zdá se mi,že v tomto ohledu je MVC "snazší"..ale jde o zvyk a aktuální potřebu :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den, nemám problém s tím, abych že bych pro každý pohled dělal novou aspx to už by byl úplný nesmysl, jde mi o to, že kvůli codebehind musím mít 100 stejných aspx, jen s tím rozdílem, že url codebehind se změní.

Zkusím uvěst na příkladu.

Mám třeba v databázi dvě tabulky. 1) Adresář firem, 2) Číselník zboží

Abych se mohl přes aplikaci podívat do adresáře firem a i do číselníku zboží, chci mít jen jednu aspx stránku. To že se dívám do toho či onoho si můžu třeba definovat QueryStringem "../page.aspx?SqlTable=AdresarFirem" nebo "../page.aspx?SqlTable=CiselnikZbozi" a tím definuji z jakého XML souboru mám načítat nastavení třeba přehledového formuláře. Pak když mám nalezen XML soubor tak se stupstí funkce, která na základě proměnných v něm zapsaných vygeneruje SQL dotaz, vygeneruje objekty stránky, řídí obecné funkcionality třeba "Uložit", "Smazat", "Editovat", "Tisknout" apod.

Doposud by to ještě šlo. Teď ale co když budu potřebovat třeba hromadně přepočítat ceny v číselníku zboží nějakým novým kurzem měny (lepší příklad mě teď nenapadá), tak to už není obecná funkcionalita použitelná i pro adresář firem. a proto teď já musím mít dvě různé aspx stránky, které jsou stejné jen mám různé codebehind.

A to je vlastně to, co mě trápí...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak mějte jednu univerzální šablonu a pak odvozené, specifické. Pro všechny použijete univerzální a odvozenou u speciálních případů. Navíc můžete mít komponenty, které budou v těchto pohledech sdílené.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

když mám již napsanou WebForms aplikaci která běží na IIS 6.1 (FW-4), která nebyla psaná ve VisualWebDeveloper, a chtěl bych využít směrování, je nutné aplikaci celou přepisovat?

Nyní je tedy 100 prázdných aspx stránek s různými codebehind.

Představu mám takovou, že by existovala 1x aspx šablona MyPage.aspx a já bych codebehind specifikoval v URL. například:

MojeAplikace/AdresarFirem/Prehled

Existovaly by třída "Public Class AdresarFirem" což by bylo vlastně nynější codebehind stránky AdresarFirem.aspx v této třídě by proběhlo vše, co v původním codebehind, a výsledek by se poslal do MyPage.aspx

Je to zcela zcestná představa?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

UrlRouting je ve FW 4.0 podporován.tudíž není problém jej do aplikace dopsat a využít jej.Samozřejmě pokud to aktuální architektura aplikace dovoluje

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A je vůbec možné to napsat ručně?

Když si něco naklikám podle návodu ve VisualWebDeveloper tak mi to samozřejmě funguje, ale pokud to chci napsat ručně a spustit pod IIS tak i kdybych se zbláznil tak to nejde.

existuje nějaký návod, jak to udělat aniž bych musel pracovat s VisualWebDeveloper ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A je nějaký rozumný a logický důvod proč to ve VS nedělat? Dodává veškeré "pohodlí" ,nápovědy,tooly,atd. Samozřejmě by ale šlo napsat vše třeba v notepadu a pak to jen zkompilovat...ale nevím,který blázen by to dělal..

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já jsem právě pochopil, že tazatel to chce dělat ve Visual Studiu namísto VisualWebDeveloper (to jsou 2 různé nástroje-neplést). VisualWebDeveloper je spíše klikací nástroj, aby umožnil dělat web i těm, kdo neumí moc porgramovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

Visual Studio nemám, mám VisualWebDeveloper. Možná jsem blázen, ale opravdu to chci napsat ručně...

Můj důvod je takový, že než napíšu jakoukoli část aplikace nebo aplikaci celou, potřebuji to vždy ještě napsat někte mimo a ručně. Mám problém s tím, že mi nestačí něco naklikat do programu, který za mě vše udělá, a přitom vůbec nechápu jak je možné že to funguje. Proto si vše napíšu (jak výše neregistrovaný uvedl) v notepadu, a spustím pod IIS ve WIN7, abych měl nad výsledným kódem absolutní kontrolu, a rozuměl tomu proč je tato část kódu tady a proč tamta část zase jinde.

Možná je to úchylka, ale než něco začnu potřebuju tomu rozumět.

U VisualWebDeveloper mi velmi vadí, že když si napíšu aplikaci s jednou stránkou, jedním tlačítkem a jednou událostí Click, tak mám aplikaci asi ve dvaceti souborech a vůbec nevím proč. Když to napíšu ručně, Je to tak stejné i ve Visual Studiu?

Zkoušel jsem v tomto případě směrování, MVC nejprve naklikat v VWD, kde mi to tedy funguje, ale vůbec nemám ponětí, jaktože to funguje. Napsat ručně mi to nejde. vůbec nechápu, jak mám controller navázat na model, a nevím jak je možné, že když ve VWD zavolám v URL controler tak to jde, ale pokud to napíšu ručně ( upravím web.config, vytvořím události v global.asax.vb), a chci volat controler, IIS mi napíše že zadaná URL neexistuje. Propisuje se nastavení Webu ještě někam jinam než do global.asax a web.config?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha, tak ale v tom případě bych Vám doporučil stáhnout si Visual Studio a psát to v něm. Sice v něm je taky grafický designér, ale když nechcete, nemusíte ho používat (já ho např. používám u winform, ale u web apliakcí téměř nikdy). Budete mít komfort našeptávání kódu, bude se Vám to dobře ladit, testovat atd. Zároveň ale budete mít úplnout kontrolu na kódem. Při založení projektu se jen vytvoří základní šablona, kde můžete cokoli přepsat a upravit si dle svého uvážení. Rozhodně bych to nepsal v poznámkovém bloku nebo něčem tomu podobném. Už jen to, že ten kód bude hrozně nepřehledný (nebudete mít označenou syntaxi), kód se Vám nebude zarovnávat, atd.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No to by pro mě bylo úplně ideální :-).

Já mám v PC nainstalováno Microsoft Visual Web Developer, ve kterém jsem dělal webové aplikace, a dále mám Microsoft Visual Basic 2010 Expres, ve kterém dělám konzolové aplikace. Obojí je pod hlavičkou Visual Studio 2010. Mám stáhnout ještě jinou aplikaci?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Visual Studio je kompletni nastroj se vsemi moznostmi. Express edice (vcetne WebDeveloper nastroje) jsou jeho dilci casti s omezenymi moznostmi. Rozhodne bych ale nerekl, ze WebDeveloper je primarne "klikaci" nastroj. Zrovna moznosti psani ciste kodu bez navrharu jsou zde vicemene srovnatelnatelne jako v plne verzi Visual Studia, ktera je placena. Naopak vetsina omezeni plyne prave z absence vyssich klikacich nastroju.

Jak jste to jiz napsal, staci vam na konzolove a formularove aplikace VB Express a na web WebDeveloper. Nic vic nepotrebujete. Maximalne si muzete v pripade zajmu stahnout ASP.NET MVC a SQL Server.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, máte pravdu omlouvám se. Já jsem si neuvědomil že v Express edici se to jmenuje jinak. Spletl jsem si to s nástrojem WebMatrix (to je taková klikací záležitost). Jinak samozřejmě WebDeveloper je velmi dobře použitelný do jistné míry stejně, jako velké Visual Studio (kdo začíná s programováním, asi velké VS nevyužije).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback