Kết nối dao cạo ASP.NET MVC


95

Tôi đang thử hiển thị một danh sách HTML trông giống như sau, bằng cách sử dụng công cụ chế độ xem Razor:

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

Mã mà tôi đang cố gắng sử dụng để hiển thị danh sách này là:

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

Trình phân tích cú pháp bị nghẹt thở, vì nó cho rằng mọi thứ ở bên phải của dấu gạch dưới trong thuộc tính id là văn bản thuần túy và không nên được phân tích cú pháp. Tôi không chắc về cách hướng dẫn trình phân tích cú pháp hiển thị TheItemId.

Tôi không muốn trừ một thuộc tính trên đối tượng mô hình bao gồm tiền tố item_.

Tôi cũng phải giữ cú pháp này vì tôi đang sử dụng danh sách với JQuery Sortable và với hàm tuần tự hóa yêu cầu thuộc tính id phải được định dạng theo cú pháp này.

Câu trả lời:


207

Bạn nên bao bọc phần bên trong của cuộc gọi bằng ( ):

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

3
Tôi bắt đầu với String.Format nhưng thích cú pháp và sự ngắn gọn của câu trả lời của bạn, tôi đánh dấu nó là câu trả lời ưa thích của mình.
David Marchelya

Tôi đang sử dụng Visual Studio 2013 và ASP.NET MVC 5, và điều này không hoạt động (chuỗi được thiết lập như là , bao gồm @và dấu ngoặc đơn) ... Có gì cuối cùng làm việc đối với tôi là rất không có vẻ yêu kiều id="foo" + Model.Bar.
Ian Campbell

Điều này đã cho tôi biến trong ngoặc đơn. Có vẻ như Razor giờ đã hiểu rằng dấu gạch dưới + một biến = một chuỗi + một biến.
Hugh Seagraves

26

Làm thế nào về việc sử dụng String.Format ? như thế này:

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


Điều này không được phân tích cú pháp chính xác, do dấu ngoặc kép lồng nhau ... nên dấu ngoặc kép bên trong là dấu ngoặc kép và dấu ngoặc kép bên ngoài, giống như thế id="@String.Format('foo{0}', item.Bar)"nào?
Ian Campbell

10

Tôi thích:

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

Chi tiết cho các nhà phát triển hỗ trợ biết chính xác những gì đang xảy ra, vì vậy nó rất rõ ràng và dễ hiểu.


2

Bạn thậm chí có thể sử dụng cách này để nối nhiều chuỗi hơn :

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

Đây là một bài viết khác.

Hy vọng sẽ giúp ai đó.


1

Bạn có thể làm như vậy theo cách đơn giản hơn:

id="item_@item.TheItemId"

0

Bài đăng này có vẻ cũ hơn nhưng bây giờ nó hoạt động trong MVC mới nhất:

id="item_@item.TheItemId"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.