102

我正在尝试使用 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 属性格式化为此语法的序列化函数一起使用。

4

6 回答 6

215

您应该使用以下内容包装调用的内部部分( )

<li id="item_@(item.TheItemId)">
于 2011-01-16T00:21:27.317 回答
27

使用String.Format怎么样?像这样:

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

于 2011-01-16T00:21:21.383 回答
11

我更喜欢:

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

详细程度可以准确地告诉支持开发人员正在发生的事情,因此它清晰易懂。

于 2013-08-28T09:37:29.457 回答
2

您甚至可以使用这种方式连接更多字符串

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

是另一个帖子。

希望能帮助某人。

于 2016-07-30T14:29:25.520 回答
1

您可以以更简单的方式做到这一点:

id="item_@item.TheItemId"
于 2020-06-02T09:01:48.650 回答
0

这篇文章似乎较旧,但现在这确实适用于最新的 MVC:

id="item_@item.TheItemId"
于 2020-06-08T10:07:41.380 回答