ASP.NET MVC Razor 연결


95

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 속성을 형식화해야하는 직렬화 함수와 함께이 구문을 유지해야합니다.

답변:


208

호출의 내부 부분을 다음과 ( )같이 래핑해야합니다 .

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

3
나는 String.Format으로 시작했지만 응답의 구문과 간결함을 선호하며 선호하는 답변으로 표시하고 있습니다.
David Marchelya 2011 년

나는 Visual Studio 2013과 ASP.NET MVC 5를 사용하고 있는데 이것은 작동하지 않습니다 (문자열은 및 괄호를 포함하여있는 그대로 설정 @ ) ... 마침내 나를 위해 일한 것은 매우 비정상적 id="foo" + Model.Bar이었습니다.
Ian Campbell

이것은 나에게 괄호 안의 변수를 주었다. 이제 Razor는 밑줄 + 변수 = 문자열 + 변수를 이해하는 것으로 보입니다.
Hugh Seagraves 19

26

String.Format을 사용하는 것은 어떻 습니까? 이렇게 :

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


중첩 된 큰 따옴표로 인해 올바르게 구문 분석되지 않습니다. 내부 따옴표가 작은 따옴표이고 바깥 쪽 큰 따옴표 여야 id="@String.Format('foo{0}', item.Bar)"합니까?
Ian Campbell

10

나는 선호한다:

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

자세한 정보는 지원 개발자에게 정확히 무슨 일이 일어나고 있는지 알려주므로 명확하고 이해하기 쉽습니다.


2

이 방법을 사용하여 더 많은 문자열 을 연결할 수도 있습니다 .

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

여기 에 또 다른 게시물이 있습니다.

희망은 누군가를 돕습니다.


1

더 간단한 방법으로 이렇게 할 수 있습니다.

id="item_@item.TheItemId"

0

이 게시물은 오래된 것 같지만 이제 최신 MVC에서 작동합니다.

id="item_@item.TheItemId"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.