RazorViewEngine을 사용하면 다음과 같이 할 수 있습니다.
if (somecondition) {
<div> some stuff </div>
}
그러나 나는 이것을 할 수없는 것 같다 (Razor는 혼란스러워진다) :
if (somecondition) {
<div>
}
if (someothercondition) {
</div>
}
여는 HTML 태그와 닫는 HTML 태그를 다른 코드 블록에 넣어야하는 상황이 있습니다. Razor에서 어떻게 할 수 있습니까?
답변
다음과 같이 시도하십시오.
if (somecondition) {
@:<div>
}
답변
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 )
답변
사용자 지정 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>
}
그렇지 않으면 여기 와 같은 이상한 코드로 끝납니다 .