2015-10-20 60 views
1

我想在使用Html.Sitecore().Field(string fieldName, Item item, object params)時禁用正在顯示的字段的網絡編輯,但我遇到問題。以下引發「參數計數不匹配」錯誤Sitecore MVC禁用網絡編輯

@Html.Sitecore() 
    .Field(item.InnerField.Name, item.InnerField.Item, 
    new Sitecore.Collections.SafeDictionary<string, string> 
    { 
     {"class", classParam}, 
     {"disable-web-edit", pageEditorEnabled.ToString()} 
    }); 

我無法使用匿名對象,因爲disable-web-edit帶有連字符。可能有一些其他關鍵字是我應該使用的,但這就是字段渲染器使用iirc的關鍵字。

[TargetParameterCountException: Parameter count mismatch.] 
    System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +14255904 
    System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +96 
    System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) +37 
    Sitecore.Mvc.Helpers.TypeHelper.CopyProperties(Object source, SafeDictionary`2 target) +89 
    Sitecore.Mvc.Helpers.SitecoreHelper.BeginField(String fieldName, Item item, Object parameters) +120 
    Sitecore.Mvc.Helpers.SitecoreHelper.Field(String fieldName, Item item, Object parameters) +23 
+0

你試過了@@ Html.Sitecore()。Field(「Field Name」,new {DisableWebEdit = true})'? –

+0

剛剛做到了。這成功了謝謝。如果你想補充說,我會接受它。還有一個我們可以作爲參數傳遞的全面列表?是否我們通常可以傳遞給字段渲染器而不使用連字符? – Teeknow

+1

注意:MVC會自動將具有下劃線的HTML參數轉換爲破折號 - 不知道這是否直接適用於此。 –

回答

7

嘗試使用DisableWebEdit在匿名對象那樣:

@Html.Sitecore().Field("Field Name", new { DisableWebEdit = true }) 

您還可以設置爲mw = 300, mh = 200像場。

我不知道是否有任何其他選項支持開箱。

任何在字段渲染管道中都不會被識別的東西將作爲HTML屬性添加到標記中。