ASP.NET MVC Razor concatenazione
-
11-10-2019 - |
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.
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.