首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Sitecore中输出视图中的链接标记

在Sitecore中输出视图中的链接标记
EN

Stack Overflow用户
提问于 2016-10-31 10:52:29
回答 1查看 2.1K关注 0票数 1

在Sitecore中,我有一个控制器呈现,它动态地遍历多个列表中的所有导航条项,并将它们输出到视图中。

我尝试了以下代码:

代码语言:javascript
复制
<li class="first-child"><a href="@i.Url">@i.Name</a></li> 

但是,当我在浏览器中检查元素时,会出现这样的情况:

代码语言:javascript
复制
<a href="<link linktype="external"; url="";https://www.example.com/en-gb/london/eat"; anchor="" target="" />">Eat</a>

上面的行在吃之前产生一个额外的>。我要做什么

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

代码语言:javascript
复制
<li class="first-child">
    <a href="@Html.Sitecore().Field("Url", i);">
             @Html.Sitecore().Field("Name", i);
    </a>
</li>

当我检查浏览器中的元素时,我得到以下内容:

代码语言:javascript
复制
<a href=";"> ; </a>

我需要帮助渲染这个在视图中,任何帮助的语法将是非常感谢的。

编辑

我的Controller操作方法如下所示:

代码语言:javascript
复制
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);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-31 10:58:48

试着做这样的事情:

代码语言:javascript
复制
@Html.Sitecore().BeginField("Url", new { haschildren= true })
@Html.Sitecore().Field("Name")
@Html.Sitecore().EndField()

上面的代码是从另一个复制的,所以请回答如何在链接字段中使用文本字段:https://stackoverflow.com/a/32848931/157833

或另一种选择:

代码语言:javascript
复制
@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类的对象,则应该将其作为第二个参数传递。方法的定义是:

代码语言:javascript
复制
public virtual HtmlString Field(string fieldName, Item item, object parameters)

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

代码语言:javascript
复制
@Html.Sitecore().Field("Url", i, new {text = @Html.Sitecore().Field("Name")}) 

显示控制器代码后,编辑

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

代码语言:javascript
复制
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
    });
}

然后在我们看来:

代码语言:javascript
复制
<li class="first-child">
    <a href="i.CityUrl">
        i.Name
    </a>
</li>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40340723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档