2010-11-22 3 views
6

면도기 뷰 엔진 템플릿에서 다음을 원합니다. 코드을 html 속성의 큰 따옴표 사이에 넣으 려합니다. 문제는 삽입하고자하는 코드 조각에 이중 따옴표가 포함되어 있다는 것입니다.이중 따옴표 사이에 면도기 코드

<a href="Url.Action("Item", new { id = Model.Item.Id, page = page });">@page</a> 

쉽게 일을 내가 변수에 링크를 계산 한 후 사용할 수 있습니다 알고 :-) 끔찍하게 잘못 설정하는 방법을 볼 수 있지만 차라리하지 않는 게 좋을 :

@{ var action = Url.Action("Question", new { id = Model.Question.Id, page = page }); }     
<a href="@action">@page</a>           

답변

17

당신 돈 면도기를 사용하거나 탈출 할 필요가 없습니다. 면도기는 따옴표가 애트리뷰트 내에있을 때 HTML을 구문 분석 할 때 HTML 외부로 벗어나므로이를 알기에 충분히 똑똑합니다. 그냥 당신이 할 경우 제대로 분석되지 않습니다 때문이 아니라 당신이 Url.Action 전화의 앞에 @ 기호가 있는지 확인하고 당신이 그것을하지 않아도 알 -

<a href="@Url.Action("Item", 
     new { id = Model.Item.Id, page = page })">@page</a> 

그 코드는 잘 작동합니다 너의 질문.

편집 : 삭제; Url.Action은 문이 아닙니다.

+4

한 참고 : 당신이 필요한 경우 Razor 표현식과 결합 된 속성의 상수 접두어를 사용하려면 @ char 뒤에 괄호를 추가해야합니다. 그렇지 않으면 Razor가이를 전자 메일 주소로 처리합니다. 예 :'id = "prefix @ (Model.Id)"' –

8

어쩌면 나는 경우에 당신의 질문을 이해하지 못했다 정정 해줘하지만 당신은 간단하게 할 수 없습니다하십시오

@Html.ActionLink(page, "Question", new { id = Model.Question.Id, page = page }) 
1

이 올바른 일 수 있습니다

href="@(action)"> @page 
+0

슬픈 일로 투표가 끝났습니다 - 내 문제에 대한 해결책은() 대신에 @ (xxx)를 추가하는 것이 었습니다. - 내 문제를 정확히 해결 한 '액션'을 내부에 넣었습니다. @xxx는 내부에서 작동하지 않았습니다. –

관련 문제