ASP.NET MVC Razor Birleştirme


96

Razor görünüm motorunu kullanarak aşağıdakine benzer bir HTML listesi oluşturmaya çalışıyorum:

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

Bu listeyi oluşturmak için kullanmaya çalıştığım kod şudur:

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

Ayrıştırıcı boğuluyor çünkü id özniteliğindeki alt çizginin sağındaki her şeyin düz metin olduğunu ve çözümlenmemesi gerektiğini düşünüyor. Ayrıştırıcıya TheItemId'i oluşturması için nasıl talimat vereceğimden emin değilim.

İstemiyorum ama model nesnesi üzerinde item_ önekini içeren bir özellik.

Listeyi JQuery Sortable ve id özniteliğinin bu sözdiziminde biçimlendirilmesini gerektiren serileştirme işleviyle kullandığım için de bu sözdizimini korumam gerekiyor.

Yanıtlar:


209

Aramanın iç kısmını şu şekilde sarmalısınız ( ):

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

3
String.Format ile başladım ama cevabınızın sözdizimini ve kısalığını tercih ediyorum, bunu tercih ettiğim cevap olarak işaretliyorum.
David Marchelya

Visual Studio 2013 ve ASP.NET MVC 5 kullanıyorum ve bu (dize ayarlanır çalışmıyor gibi dahil @nihayet benim için çalıştı Ne ... çok durunda ve parantez) id="foo" + Model.Bar.
Ian Campbell

Bu bana parantez içindeki değişkeni verdi. Razor'un artık bir alt çizgi + bir değişken = bir dize + bir değişken olduğunu anladığı görülüyor.
Hugh Seagraves

26

String.Format kullanmaya ne dersiniz ? bunun gibi:

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


İç içe geçmiş çift tırnaklar nedeniyle bu doğru bir şekilde ayrıştırılmıyor ... iç tırnaklar tek tırnak ve dış çift tırnaklar id="@String.Format('foo{0}', item.Bar)"mı olmalı ?
Ian Campbell

10

Tercih ederim:

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

Ayrıntı, destek geliştiricilerine tam olarak ne olduğunu söyler, bu nedenle açık ve anlaşılması kolaydır.


2

Daha fazla dizgeyi birleştirmek için bu yolu bile kullanabilirsiniz :

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

İşte başka bir gönderi.

Umut birine yardım eder.



0

Bu gönderi daha eski görünüyor, ancak şimdi bu en son MVC'de çalışıyor:

id="item_@item.TheItemId"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.