질문에 "내 페이지에 아이콘을 표시하고 싶습니다.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 경로를 표시하고 이미지를 렌더링하지 않습니다. 그러나 주 이미지 필드를 올바르게 표시합니다.
가 나는 또한 오히려 HtmlString보다는 그냥 일반 문자열을 다시 보내는 시도했지만 그것은 단지 원시 값을 반환 : 당신은 아래의 스크린 샷에서이를 볼 수 있습니다.
내가 묻는 것은 아이콘의 경우 경로가 아닌 페이지에 내 아이콘을 표시하는 방법입니다. 아니면 필드 유형을 이미지로 전환하고 아이콘을 미디어 라이브러리의 이미지로 추가해야합니까?
필자는 필드 유형을 Image로 직접 변경하고 아이콘을 이미지로 미디어 라이브러리에 업로드했습니다. 나는 페이지 편집기 지원을 허용하고 싶었고 이것은이 경우에 나를위한 가장 간단한 옵션이다. –