IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pár nesrovnalostí v Razor View

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

Aktivity
Avatar
Luboš Hnědý:27.1.2018 13:27

Ahoj mám pár otázek na view v .net MVC. První otázka je co přesně znamená for u příkazů například

@Html.TextBox
@Html.TextBoxFor

další věc je jaký je rozdíl mezi TextBoxFor a EditorFor a poslední otázka jaký je rozdíl mezi

@Html.DisplayFor(modelItem => item.Title)
@item.Title

co bych měl například použít u adresy obrázku

<img src="???" />

Všem budu strašlivě moc vděčný za radu atd. pročítl jsem si to anglicky ale úplně jsem to nepochopil. díky

 
Odpovědět
27.1.2018 13:27
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Luboš Hnědý
Petr Šťastný:27.1.2018 14:09
@Html.TextBox
@Html.TextBoxFor

Dělají to samé, obojí vygeneruje stejné HTML. Ale TextBoxFor ti všechno zkontroluje už během kompilace - takže když změníš model, měla by se ti už při kompilaci vyhodit chyba.

@Html.DisplayFor(modelItem => item.Title)

by mělo dovolit změnit způsob jak se to item.Title vygeneruje. Třeba na StackOverflow je vysvětlené jakým způsobem můžeš třeba ovlivnit generování stringu. Kdybys chtěl, aby se vypsalo "Null string" když je string, který tam je, prázdný nebo null, vytvoříš soubor String.cshtml do složky DisplayTemplates do složky s views, s tímhle kódem:

@model string

@if (string.IsNullOrEmpty(Model)) {
   <strong>Null string</strong>
}
else {
   @Model
}

Takhle můžeš za určitých okolností ovlivňovat způsob, jak se to vygeneruje.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
27.1.2018 14:09
Avatar
Odpovídá na Petr Šťastný
Luboš Hnědý:27.1.2018 15:54

Díky moc za reakci. První jsem pochopil a druhý moc nechápu.... Mohl by si to ještě zkusit nějak jinak prosí ?
A jinak co tedy mám použít když bych chtěl udělat tohle

<img src="@item.Title />
nebo
<img src="@Html.DisplayFor(modelItem => item.Title)" />

Moc díky za odpověď

 
Nahoru Odpovědět
27.1.2018 15:54
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Luboš Hnědý
Petr Šťastný:27.1.2018 16:16

U prvního příkladu: Použij co chceš, ale když použiješ TextBoxFor, tak ti Visual Studio bude červeně podtrhávat chyby. U TextBox by ti měla spadnout aplikace bez varování od visual studia.

U druhého příkladu: U obrázků je asi lepší použít item.Title, i když můžeš obojí. Ten rozdíl je, že u Html.DisplayFor můžeš přepsat způsob, jak to generuje HTML.

 
Nahoru Odpovědět
27.1.2018 16:16
Avatar
Odpovídá na Petr Šťastný
Luboš Hnědý:27.1.2018 16:20

Super díky moc snad už rozumím :)

 
Nahoru Odpovědět
27.1.2018 16:20
Avatar
Odpovídá na Luboš Hnědý
Michal Štěpánek:27.1.2018 21:51

další věc je jaký je rozdíl mezi TextBoxFor a EditorFor

TextBoxFor je "prostě textbox" - políčko pro zadávání textu, resp. čehokoliv bez rozdílu typu dat.
EditorFor je "lepší" textbox, neboť je schopen reagovat na typ zobrazovaných dat. Když jsou např. data ve formátu DateTime, tak třeba v Google Chromu se zobrazí políčko pro výběr datumu z kalendáře, když jsou data v "int" stane se z toho něco jako NumericUpDown...

Nahoru Odpovědět
27.1.2018 21:51
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.