2016-10-31 21 views
1

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

上述線產生一個附加>前吃。我有什麼要

我也試過這個語法查看:

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

} 
+0

這是你需要什麼? http://stackoverflow.com/a/32848931/157833 –

+0

什麼是'我'? – Liam

+1

[Sitecore MVC和FieldRenderer.Render for Links]的可能重複(http:// stackoverflow。com/questions/24958601/sitecore-mvc-and-fieldrenderer-render-for-links) – Gatogordo

回答

2

嘗試是這樣的:

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

以上代碼從另一個複製SO回答解釋如何使用鏈接字段內的文本字段在這裏:https://stackoverflow.com/a/32848931/157833

或另一種選擇:

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

由Jason這裏解釋:https://theagilecoder.wordpress.com/2014/10/06/sitecore-mvc-editable-links-wrapping-text-and-images/

假設你iItem類的一個對象,你應該把它作爲第二個參數。方法的定義是:

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> 
+0

@Liam我的意圖不是複製別人的答案,而是假裝它是我的。這是您在Sitecore MVC項目的90%中可以找到的3行代碼。檢查https://www.google.pl/search?q="%40Html.Sitecore().BeginField「。我認爲這些問題是不同的,儘管事實上他們的答案是一樣的。 –

+0

嗨馬雷克,我試着實施你的兩個樣品,目前它還沒有工作。我通過for循環動態輸出文本** @ foreach(模型中的var我){**我通過我作爲obj參數是這樣的:** @ Html.Sitecore()。Field(「Url」,new {text = @ Html.Sitecore()。Field(「Name」)},i)**在瀏覽器中,視圖爲空 – hoChay

+0

假設'i'是Item項目的對象,您應該將它作爲第二個參數。方法定義是'公共虛擬HtmlString字段(字符串fieldName,項目項目,對象參數)' –