Domanda

Sto cercando la rendono una lista HTML che appare come il seguente, utilizzando la vista del motore Razor:

<ul>
  <li id="item_1">Item 1</li>
  <li id="item_2">Item 2</li>
</ul>

Il codice che sto tentando di utilizzare per il rendering questo elenco è il seguente:

<ul>
@foreach (var item in Model.TheItems)
{            
  <li id="item_@item.TheItemId">Item @item.TheItemId</li>
}
</ul>

Il parser sta soffocando, perché pensa che che tutto alla destra della sottolineatura nel attributo id è il testo normale e non deve essere analizzato. Sono incerta su come istruire il parser di rendere TheItemId.

Non voglio, ma una proprietà sull'oggetto modello che include il item_ prefisso.

Ho anche tenere questa sintassi come sto usando la lista con jQuery ordinabili e con la funzione Serialize che richiede l'attributo id essere formattato in questa sintassi.

È stato utile?

Soluzione

Si dovrebbe avvolgere la parte interna della chiamata con ( ):

<li id="item_@(item.TheItemId)">

Altri suggerimenti

Come sull'utilizzo String. formattare ? in questo modo:

<li id="@String.Format("item_{0}", item.TheItemId)">

Io preferisco:

<li id="@String.Concat("item_", item.TheItemId)">

La verbosità racconta gli sviluppatori di supporto esattamente ciò che sta accadendo, in modo che sia chiaro e facile da capire.

È anche possibile utilizzare questo modo per concat più stringhe :

<li id="@("item-"+item.Order + "item_"+item.ShopID)" class="ui-state-default"></li>

Ecco è un altro post.

La speranza aiuta qualcuno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top