2014-11-06 1 views
0

링크를 포맷하고 나는 내가 그것을면도기 .NET 기본 레이아웃 문자열 내가 주어진 ViewBag에서 문자열의 형식을 시도하고

을 분쇄해야 할 변수를 얻을 모델을 사용하려고 할 때 그것은

<td align="left" width="60%"><img src="@String.Format("{0}/{1}/img/logo.png", 
ViewBag.PictureCDNName, ViewBag.DefaultTheme)" alt="@ViewBag.DefaultTheme"/></td> 

을 잘 작동합니다

<td align="left" width="60%"><img src="@String.Format("{0}/{1}/img/logo.png", 
Model.PictureCDNName, Model.DefaultTheme)" alt="@Model.DefaultTheme"/></td> 

레이아웃에서이 작업을 수행하는 방법이 있습니까? 아니면 잘못하고 있습니까? 템플릿이 전자 메일 용이므로 나를 위해 고통 스럽습니다.

@RenderBody() 

는 레이아웃의 몸을 호출하는 데 사용됩니다 그것은 @model 당신은

@model MyNamespace.Models.MyModel 

처럼 그리고 컨트롤러에 뷰의 상단에있는 모델을 선언 할 필요가

+0

당신이 하나를 제공 할 수 있습니다
당신을 감사합니다, 당신이 날 도와 전체 페이지를 중단하지 않도록 잘못된 경우에 대비하여 링크 휴식입니다 - HTML 출력 2 -보기의 맨 위에있는 모델 정의. –

+0

'DefaultTheme'그것은'ViewBag'를 사용하는 출력입니다 모델은 동적입니다. View의 맨 위에는 ViewBag ("Render", 모델)을 반환하는 컨트롤러에서 렌더링되는 것이 없으며, – user37202

+0

모델의 맨 위에 '@model MyNamespace.Models.MyModel'과 같이 모델을 선언해야합니다. . 그 면도기 엔진은 당신의'모델'을 인식 할 것입니다. –

답변

0

을 포함

public ActionResult YourAction() 
{ 
    MyModel model = new MyModel(); 

    // other needed operations 

    return View(model); 
} 
+0

'body'에'layout'이라면'body'는'model'에 접근 할 수 있습니까? – user37202

+0

결과 HTML에 대해 클라이언트에 전송 된 문자열로 표시됩니다. 면도기 엔진에 의해 실행되고 출력 문자열이 HTML 결과에 추가됩니다. 속성 값, 텍스트 어딘가 또는 자바 스크립트 코드 일 수 있습니다. –

+0

이 경우에는'@model MyModel ... '과 같이 맨 위를 통과하면 모델을 사용할 수 있다는 것을 의미합니다. – user37202

0
@section ImageRender 
{ 
<td align="left" width="60%"><img src="@String.Format("{0}/{1}/img/logo.png", 
Model.PictureCDNName, Model.DefaultTheme)" alt="@Model.DefaultTheme"/></td> 
} 

이 트릭을했고, 내가 전화 할 때 이제 레이아웃은 작동 @RenderSectioni("ImageRender",false)을 표시 - 링크가