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.
Člen
Zobrazeno 6 zpráv z 6.
//= 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.
@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.
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ěď
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.
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...
Zobrazeno 6 zpráv z 6.