2016-11-04 1 views
1

질문에 "내 페이지에 아이콘을 표시하고 싶습니다.Sitecore 페이지 (MVC)에 아이콘 표시

나는 호출 드라이버 모델을 가지고 : 나는 페이지 편집기 지원을 활성화하기 위해 원하는대로 내가 HtmlStrings 이러한 필드를 정의

내 모델에서
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace TestSitecore.Models 
{ 
    public class Driver 
    { 
     // Single-Line Text 
     public HtmlString Heading { get; set; } 
     // Multi-Line Text 
     public HtmlString MainContent { get; set; } 
     // Image 
     public HtmlString MainImage { get; set; } 
     // Single-Line Text 
     public HtmlString Firstname { get; set; } 
     // Single-Line Text 
     public HtmlString Surname { get; set; } 
     // Date 
     public HtmlString DateOfBirth { get; set; } 
     // Single-Line Text 
     public HtmlString Nationality { get; set; } 
     // Icon 
     public HtmlString NationalityFlag { get; set; } 

    } 
} 

,하지만 난을 표시하는 각 필드 위의 의견을 추가 한 Sitecore 필드 유형.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using TestSitecore.Repositories; 

namespace TestSitecore.Controllers 
{ 
    public class DriverController : Controller 
    { 
     // GET: Driver 
     public ActionResult Featured() 
     { 
      var repository = new DriverRepository(); 
      var driver = repository.GetDriver(); 

      return View(driver); 
     } 
    } 
} 

DriverController는 모델 데이터를 채우고보기로 돌아 저장소를 사용

나는 DriverController라는 컨트롤러를 가지고있다.

내가 DriverRepository라는 저장소 있습니다

using Sitecore.Mvc.Presentation; 
using Sitecore.Web.UI.WebControls; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using TestSitecore.Models; 

namespace TestSitecore.Repositories 
{ 
    public class DriverRepository 
    { 
     public Driver GetDriver() 
     { 
      var driver = new Driver(); 
      var rendering = RenderingContext.Current.Rendering; 
      var datasource = rendering.Item; 

      driver.Heading = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_HEADING)); 
      driver.MainImage = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_MAIN_IMAGE)); 

      driver.Firstname = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_FIRSTNAME)); 
      driver.Surname = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_SURNAME)); 
      driver.DateOfBirth = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_DATE_OF_BIRTH)); 
      driver.Nationality = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_NATIONALITY)); 
      driver.NationalityFlag = new HtmlString(FieldRenderer.Render(datasource, Constants.FIELD_NATIONALITY_FLAG)); 

      return driver; 
     } 
    } 
} 

저장소가 페이지 편집기 지원을 가능하게 FieldRenderer.Render 방법을 utlises을.

그리고는 마침내라는보기를 추천했다 : 내 페이지의 출력을 볼 때

@using TestSitecore.Models 

@model Driver 

<div class="highlight"> 
    <h2>@Model.Heading</h2> 
    <div class="row"> 
     @Model.MainImage 
    </div> 
    <div class="row"> 
     <div class="col-md-12 col-lg12"> 
      @Constants.FIELD_NAME: @Model.Firstname 
      <br /> 
      @Constants.FIELD_SURNAME: @Model.Surname 
      <br /> 
      @Constants.FIELD_DATE_OF_BIRTH: @Model.DateOfBirth 
      <br /> 
      @Constants.FIELD_NATIONALITY: @Model.Nationality 
      <br /> 
      @Constants.FIELD_NATIONALITY_FLAG: @Model.NationalityFlag 
      <br /> 
     </div> 
    </div> 
</div> 

이 아이콘 필드 그냥 아이콘으로 Sitecore 경로를 표시하고 이미지를 렌더링하지 않습니다. 그러나 주 이미지 필드를 올바르게 표시합니다.

Page Output

가 나는 또한 오히려 HtmlString보다는 그냥 일반 문자열을 다시 보내는 시도했지만 그것은 단지 원시 값을 반환 : 당신은 아래의 스크린 샷에서이를 볼 수 있습니다.

내가 묻는 것은 아이콘의 경우 경로가 아닌 페이지에 내 아이콘을 표시하는 방법입니다. 아니면 필드 유형을 이미지로 전환하고 아이콘을 미디어 라이브러리의 이미지로 추가해야합니까?

답변

1

플래그가 Sitecore 이미지 필드에 없으므로 렌더러가 img 태그를 생성하지 않습니다. 그래서 당신은 두 가지 옵션이 있습니다 :

  • 스위치 필드 유형 이미지와 (당신이 언급 한 바와 같이)
  • 변화를 Sitecore에 img 태그 표시 할 HTML 플래그를 추가 : 사용자가 제공해야합니다 <img src="@Model.NationalityFlag"/> (참고 이 경우 편집자의 편집 가능성) - 편집 모드에서 또는 편집 프레임을 사용할 때 출력을 변경할 수 있습니다.
+0

필자는 필드 유형을 Image로 직접 변경하고 아이콘을 이미지로 미디어 라이브러리에 업로드했습니다. 나는 페이지 편집기 지원을 허용하고 싶었고 이것은이 경우에 나를위한 가장 간단한 옵션이다. –