在Sitecore中输出View中的链接标记

时间:2016-10-31 10:52:29

标签: asp.net sitecore

在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>

上述行产生了一个额外的&gt;吃之前。我有什么需要

我也在View中尝试了这种语法:

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

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

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

我需要帮助在View中呈现这一点,我们将非常感谢您对语法的任何帮助。

修改

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

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);

}

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

Input to neural network from shuffle batch: [batch_size, patch_size, patch_size, depth]
During training, this is [512, 32, 32, 3]

Input to neural network for inference: [batch_size, height, width, depth]
During inference, this can be [1, 100, 100, 3], or [3, 150, 150, 3], etc.

上面的代码从另一个SO答案中复制,解释了如何在链接字段中使用文本字段:https://stackoverflow.com/a/32848931/157833

或其他选项:

@Html.Sitecore().BeginField("Url", new { haschildren= true })
@Html.Sitecore().Field("Name")
@Html.Sitecore().EndField()
杰森在这里解释:https://theagilecoder.wordpress.com/2014/10/06/sitecore-mvc-editable-links-wrapping-text-and-images/

假设您@Html.Sitecore().Field("Url", new {text = @Html.Sitecore().Field("Name")}) i类的对象,则应将其作为第二个参数传递。方法定义是:

Item

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

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
    });
}