ASP.NET MVC Razor Concatenation

Dav*_*lya 90 asp.net-mvc razor asp.net-mvc-3 asp.net-mvc-4

我正在使用Razor视图引擎尝试渲染一个类似于以下内容的HTML列表:

<ul>
  <li id="item_1">Item 1</li>
  <li id="item_2">Item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

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

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

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

我不想在模型对象上包含item_前缀的属性.

我还必须保持这种语法,因为我使用带有JQuery Sortable的列表以及需要使用此语法格式化id属性的serialize函数.

Mat*_*ott 194

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

<li id="item_@(item.TheItemId)">
Run Code Online (Sandbox Code Playgroud)

  • 我从String.Format开始,但更喜欢你的回答的语法和简洁,我把它标记为我的首选答案. (3认同)

Fil*_*erg 25

如何使用String.Format?像这样:

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


小智 9

我更喜欢:

<li id="@String.Concat("item_", item.TheItemId)">
Run Code Online (Sandbox Code Playgroud)

详细程度告诉支持开发人员到底发生了什么,所以它清晰易懂.