在 Sitecore 输出视图中的一个 link 标签

In Sitecore output a link tag in View

在 Sitecore 中,我有一个控制器渲染,它动态循环遍历多列表中的所有导航栏项目并将它们输出到视图。

我试过下面的代码:

<li class="first-child"><a href="@i.Url">@i.Name</a></li> 

但是,当我在浏览器中检查元素时,会出现:

<a href="<link linktype="external"; url="";https://www.example.com/en-gb/london/eat"; anchor="" target="" />">Eat</a>

上面一行在 Eat 之前产生了一个额外的 >。我有什么要

我也在视图中尝试过这种语法:

<li class="first-child">
    <a href="@Html.Sitecore().Field("Url", i);">
             @Html.Sitecore().Field("Name", i);
    </a>
</li>

当我在浏览器中检查元素时,我得到了这个:

<a href=";"> ; </a>

我需要帮助在视图中呈现此内容,我们将不胜感激任何有关语法的帮助。

编辑

我的控制器操作方法如下所示:

public ActionResult FooterCities() 
{

    var model = new List<FooterCities>();

    var footercitycategories = Sitecore.Context.Item;

    var item = (Sitecore.Data.Fields.MultilistField)footercitycategories.Fields["FooterCities"];

    foreach (var m in item.GetItems())
    {
        model.Add(
        new FooterCities()
        {
            Name = m["Name"],
            CityUrl = m["CityUrl"]
        });

    }

    return View("/Views/Example/Layouts/LayoutRenderings/ViewRendering/FooterCities.cshtml", model);

}

尝试这样的事情:

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

上面的代码从另一个 SO 答案复制而来,解释了如何在此处的 link 字段中使用文本字段: .

或其他选项:

@Html.Sitecore().Field("Url", new {text = @Html.Sitecore().Field("Name")})

杰森在这里解释道:https://theagilecoder.wordpress.com/2014/10/06/sitecore-mvc-editable-links-wrapping-text-and-images/

假设您 iItem class 的对象,您应该将其作为第二个参数传递。方法定义为:

public virtual HtmlString Field(string fieldName, Item item, object parameters)

所以在你的情况下应该是:

@Html.Sitecore().Field("Url", i, new {text = @Html.Sitecore().Field("Name")}) 

编辑 在你展示你的控制器代码后

你应该改变模型生成的方式。使用:

foreach (var m in item.GetItems())
{
    Sitecore.Data.Fields.LinkField urlField = m.Fields["CityUrl"];
    string url = urlField.GetFriendlyUrl();
    model.Add(
    new FooterCities()
    {
        Name = m["Name"],
        CityUrl = url
    });
}

然后在视图中:

<li class="first-child">
    <a href="i.CityUrl">
        i.Name
    </a>
</li>