MVC 剃刀级联

我尝试使用 Razor 视图引擎呈现一个如下的 HTML 列表:

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

我试图用来呈现这个列表的代码是:

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

解析器正在窒息,因为它认为 id 属性中下划线右侧的所有内容都是纯文本,不应该进行解析。我不确定如何指示解析器呈现 TheItemId。

我不想在模型对象上添加一个包含 item _ 前缀的属性。

我还必须保持这种语法,因为我使用的是 JQuery Sortable 列表和序列化函数,序列化函数要求 id 属性按照这种语法进行格式化。

76522 次浏览

How about using String.Format? like this:

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

You should wrap the inner part of the call with ( ):

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

I prefer:

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

The verbosity tells the support developers exactly what is happening, so it's clear and easy to understand.

You can even use this way to concat more strings:

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

Here is another post.

Hope helps someone.

You can so this in a simpler way:

id="item_@item.TheItemId"

This post seems to be older but now this does works now in latest MVC:

id="item_@item.TheItemId"