Hyperlink Sitecore MVC和FieldRenderer。渲染链接

Hyperlink Sitecore MVC和FieldRenderer。渲染链接,hyperlink,sitecore,sitecore-mvc,Hyperlink,Sitecore,Sitecore Mvc,我正在尝试像这样渲染常规链接字段-FieldRenderer.render(项目,“链接”) 这可以按预期工作,但如何在呈现的标记中设置自定义文本。我希望我的输出看起来像这样 <a href="[link from sitecore]">[custom text from another field]</a> 基本上,链接的文本应该来自项目的另一个字段 谢谢您可能想尝试以下方法: @Html.Sitecore().BeginField("Link Field") /

我正在尝试像这样渲染常规链接字段-
FieldRenderer.render(项目,“链接”)

这可以按预期工作,但如何在呈现的标记中设置自定义文本。我希望我的输出看起来像这样

<a href="[link from sitecore]">[custom text from another field]</a>

基本上,链接的文本应该来自项目的另一个字段


谢谢

您可能想尝试以下方法:

@Html.Sitecore().BeginField("Link Field")
//custom code
@Html.Sitecore().EndField()

Varun的回答绝对正确,但是当内容编辑器在
常规链接的
描述
字段中输入值时,您会遇到问题。链接渲染器将输出描述以及
BeginField
EndField
方法之间的任何内容

解决方案是允许一个额外的参数(
HideDescription
)来隐藏描述。两种可能的解决办法是:

  • 使用您自己的类覆盖标准的
    Sitecore.Xml.Xsl.LinkRenderer
    类,这将阻止将描述放入
  • Sitecore.Pipelines.RenderField.GetLinkFieldValue
    之后添加自定义管道步骤,该步骤将执行一些渲染后处理以删除描述
  • 选择2的侵入性较小,但要确保结果100%有点困难。一旦你有了这个,你就可以像下面这样渲染字段

    @Html.Sitecore().BeginField("Link Field", new { HideDescription = true })
    @Html.Sitecore().Field("Text Field")
    @Html.Sitecore().EndField()
    

    Jason有一个好主意,但是这个功能是现成的

    @Html.Sitecore().BeginField("Link Field", new { haschildren= true })
    @Html.Sitecore().Field("Text Field")
    @Html.Sitecore().EndField()
    

    根本不需要修改任何内容。

    已经得到了回答,但这对我很有效

    @Html.Sitecore().BeginField("Target URL", item.InnerItem, new { text = @Html.Sitecore().Field("Title", item.InnerItem) })
    
    @Html.Sitecore().EndField()
    

    您还可以使用begin和end字段并使用haschildren属性,这将隐藏文本并仅显示begin和end语句之间的任何子内容:

    @Html.Sitecore().BeginField("ItemName/ID", Model.DataSourceItem, new {
      haschildren = true,
      @class = "my-custom-class"
    })
    <span class="extra-content">
      @Html.Sitecore().Field("Text Field")
    </span>
    @Html.Sitecore().EndField()
    
    @Html.Sitecore().beginield(“ItemName/ID”,Model.DataSourceItem,新建{
    haschildren=正确,
    @class=“我的自定义类”
    })
    @Html.Sitecore()字段(“文本字段”)
    @Html.Sitecore().EndField()
    
    是否有MVC api的参考资料?