답변:
다음과 같이 시도하십시오.
if (somecondition) {
@:<div>
}
<text><div></text>
작동하지만 작동 <text></div></text>
하지 않습니다.
Darin의 대답을 설명하려면 다음과 같이 HTML 접두사를 붙입니다.
@:<html>
@ : Razor에서는 '무언가를 일반 텍스트로 렌더링'을 의미합니다.
또는 이것을 사용할 수 있습니다. 이것은 원래 작성한대로 HTML을 출력합니다 (HTML을 출력하려는 경우 Razor가 수행하는 자동 HTML 인코딩을 방지하는 데 사용할 수도 있습니다).
@Html.Raw("<html>")
(MS의 Html.Raw 참조-http://msdn.microsoft.com/en-us/library/gg568896(v=vs.111 ) .aspx )
@:<a href="@link" class="@classNames">@text</a>
@Html.Raw()
- 관련 SO 게시물 참조
사용자 지정 MVC 도우미 메서드를 만들 수 있습니다. 당신과 함께 네임 스페이스에 공용 정적 클래스 MyRenderHelpers를 만들고 System.Web.Mvc.Html
Html 메서드를 작성합니다.
namespace System.Web.Mvc.Html
{
public static class MyRenderHelpers
{
public static MvcHtmlString Html(this HtmlHelper helper, string html, bool condition)
{
if (condition)
return MvcHtmlString.Create(html);
else
return MvcHtmlString.Empty;
}
}
}
이제 면도기보기에서이 확장 메서드를 사용할 수 있습니다.
@Html.Html("<div>", somecondition)
이 작업을 수행해야한다는 사실은 일반적으로 뷰 코드가 올바르게 팩터링되지 않았 음을 나타냅니다. HTML의 특성은 균형 잡힌 태그 또는 자체 폐쇄 형 태그 (적어도 HTML 4에서는 HTML 5에서 멀어지는 것처럼 보임)를 갖는 것이며 Razor는 그 가정에 의존합니다. 조건부로 a <div>
를 출력하면 나중에 출력 할 수도 있습니다 </div>
. if
진술에 whoel 쌍을 넣으십시오 .
@if(something) {
<div>
Other stuff
</div>
}
그렇지 않으면 여기 와 같은 이상한 코드로 끝납니다 .
@:
또는<text></text>
if (somecondition) { @:</div> }
<link>
태그를 닫지 않습니다 .
<text><div></text>
- haacked.com/archive/2011/01/06/...