Generování HTML   otázka

ASP.NET MVC

Zdravím všechny,

rád bych se zeptal proč mi razor generuje jiné HTML u těchto dvou cyklů:

@for (var i = 0; i < Model.Count(); i++)
{
    @Html.EditorFor(m => m[i].MyProperty)
}

@foreach (var item in Model)
{
    @Html.EditorFor(m => item.MyProperty)
}

U prvního se vše vygeneruje pěkně s indexy jednotlivých cyklů v názvech každého s elementů, ale u druhého mají všechny HTML elementy stejná jména.

Díky za radu.

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

To bude tím, že ta lambda metoda není jen obyčejný kód, který se prostě zavolá, ale je to Expression, který si můžete prohlédnout za běhu. A ten EditorFor se na něj podívá a zjistí, že tam je indexer, tak svůj výstup podle toho upraví. V druhém případě tam vidí jen proměnnou item a z toho nic nevykouká.

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

Děkuji za upřesnění. Měl bych doplňující otázku. Pokud se jedná obecně o ICollection, na které nelze zavolat indexer, je nutné to řešit jejím přetypováním např na List, nebo se to řeší nějak jinak?

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

Tak jak se to dělá nevím, ale asi bych se ToArray() nebránil.

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