2013-01-16 7 views
5

면도기 <text> 태그가 서식 규칙을 따르지 않음을 확인했습니다. cshtml 문서를 포맷 할 때 예를 들어, 나는 다음과 같은 코드로 끝날 :면도날 <text> 내용

이 중 면도기 템플릿 함수에 특정 아니라고
@MyHelper.MyMethod(@<div> 
    <p>Hello world</p> 
</div>) 

@MyHelper.MyMethod(@<text> 
<p>Hello world</p> 
</text>) 

참고, <text> 블록 어디서나 같은 일을 할 것입니다. 같은 <div> 같은

클라이언트 HTML 태그 (와 그 내용)는 그러나 상관없이 내가 (또는 제거) 추가 태그 특정 옵션에 <text> 요소를 어디에, 내가 지정한 서식 스타일을 따르십시오. .., 효과가 없습니다. 원하는 결과는 이전 예제에서 <text> 요소 내용이 <div> 요소 내용과 같이 형식화 된 것입니다.

다른 블록 레벨의 클라이언트 HTML 요소의 것과 내가 본

(등<div>, <section>를) <text> 요소에 동일한 서식 스타일을 적용에 대한 트릭, 또는 직장 어라운드가 있습니까 예를 들어 herehere과 같은 Razor 언어와 같은 다른 서식 지정 문제는 전례가 없으므로 해결책이 없을 수도 있습니다. 어느 쪽이든, 어쩌면 누군가가 고칠 수 있습니다.

그것은
VS 2010


부록에 건축, 면도기 2.X의 웹 사이트 (내가이의 지친 성장했습니다.)

아마도이 2012 년에 문제가 해결되었습니다. 몰라, 업데이트하지 마라. 그러나 <text> 블록, @ -prefixed 블록 및 더 많은 형식을 잘 지키지 마십시오.

다른 예로, 이번에 @ -prefixed 블록 (구조 및)

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
} 

오른쪽 다소 잘 보인다? 그래, 불행히도 실제로는 구문 상 유효하지 않습니다. 외부 블록 (외부 : foreach)의 중단되지 않은 범위 내에서 발생하므로 내부 foreach@ - 접두사는 허용되지 않습니다.

해결책? 내측에서 @을 생략하십시오 foreach. 포맷을하면 어떻게됩니까?

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    foreach (var qux in foo.C) { 
    <div>@(qux.D)</div> 
    <div>@(qux.E)</div> 
    } 
} 

엄청난, 내부 들여 쓰기를 잃었습니다. 똥.

좋아요, 그 <text> 블록은 어떨까요? 유용 할 것입니다. 맞습니까?물론 블록의 내용을 <text> 블록으로 감싸주십시오. 이제 Razor에 관한 한 @ -prefixing inside foreach은 구문 적으로 유효합니다.

@foreach (var foo in bar) { 
    <text> 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
    </text> 
} 

좋아, ; 그러나 이것이 작동하는 동안 내 원래 질문의 문제를 보여줍니다. 이제 <text> 블록 내용이 들여 쓰기을 준수하지 않습니다. 왜 우리는 할 수 없습니다 :

더 나은 아직
@foreach (var foo in bar) { 
    <text> 
     <div>@(foo.A)</div> 
     <div>@(foo.B)</div> 
     @foreach (var qux in foo.C) { 
      <div>@(qux.D)</div> 
      <div>@(qux.E)</div> 
     } 
    </text> 
} 

또는는 <text> 블록 나사 등의 범위 내에서 @ -prefixed 구조 허용 :

@foreach (var foo in bar) { 
    <div>@(foo.A)</div> 
    <div>@(foo.B)</div> 
    @foreach (var qux in foo.C) { 
     <div>@(qux.D)</div> 
     <div>@(qux.E)</div> 
    } 
} 

TL;

닥터

내게 전화, 항문, 제발 미친 전화. 상관 없어요. 지금까지 알 수 있듯이이 제품은 형식 설정에 관계없이 올바르게 작동하지 않습니다.

VS 2010 면도기 포맷이 설명 된대로 작동하도록하는 방법을 아는 사람이 있습니까? (또는 내 OCD이 그냥 파이프 꿈?)

+1

이것은 단지 슬픈 일입니다. 이 문제와 거의 모든 면도기 형식 문제에 대한 해결책은 다음과 같습니다. ** 문서 형식을 지정하지 마십시오. **. 솔직히, 그건 말도 안돼. 이와 같은 문제와 [this] (http://stackoverflow.com/questions/13829012/the-system-web-razor-api-documentation)를 통해 나는 "만난"마감일이 너무 깁니다. . – Dan

답변

1

는 대한 해결 방법은 다음과 같습니다과

  1. 오른쪽 cshtml 파일을 클릭
  2. 열기 ...
  3. 선택 XML (Text) Editor
  4. 를 눌러 CTRL + E, D
+0

+1 "해결책";) - 나는 CodeMaid에 "Format on Save"라는 단어가 있다는 것을 간과 했으므로 문서를 수동으로 포맷팅 할 필요가 없습니다. 문제의 일부인 것 같아요. 문서 형식을 제어하지 못하게 된 것 같습니다. 어쨌든, 제안을 주셔서 감사합니다, 그러나 이것이 가능한 장기적인 해결책인지는 모르겠습니다. – Dan