Sitecore MVC 可在页面编辑器中编辑 link

Sitecore MVC editable link in page editor

我正在尝试从自定义模型输出 link 和 link 文本,以便它可以在页面编辑器中编辑。它正常工作但在页面编辑器中没有。 在我的模型中 class 我有 2 个这样的字符串:

public string Link { get; set; }
public string LinkText { get; set; }

我尝试像这样在存储库中编辑文本:

model.LinkText = FieldRenderer.Render(item, "Link Text");
model.Link = LinkManager.getItemUrl(item);

在我的 .cshtml 文件中,我正在输出这样的字段:

<a href="@Model.Link>@Model.LinkText<a/>

我是不是以错误的方式解决这个问题,或者我可以通过一些调整让这段代码工作吗?

要让编辑器在页面编辑器中工作,您需要更改 属性 的类型。

改变

public string Link { get; set; }

public IHtmlString Link { get; set; }

这将允许 MVC 呈现页面编辑器的 html 组件。这应该会处理页面编辑器中的 link 文本。

要使 link 可编辑将取决于字段类型。

这取决于模板中的字段类型。

如果您使用的是通用 link 字段 您需要在模型中为 link(HtmlString 类型)使用单个 属性。您初始化 'LinkText' 属性 的方式很好。在您的剃刀代码中,您只需使用 @Model.PropertyName.

如果您为目标页面和 link 文本使用两个单独的字段,您将需要使用编辑框架(不确定与此等效的 mvc)或自定义页面编辑器按钮来打开一个弹出窗口,其中可以编辑内容编辑器样式的字段。

尝试类似这样的操作,Link 字段应为常规 Link。 :

@using (BeginRenderLink(x => x.Link, isEditable: true))
{
    @Editable(x => x.Title);
}