2016-08-29 41 views
0

今天我正面臨一個具有以下要求的問題。如何使用Glass映射器進行日期編輯

  1. 日期應該是可編輯的。

  2. 日期應採用特定格式。

我的代碼就像下面哪個不起作用。

foreach(var item in Model) 
{ 
    <div>@Editable(item, x => x.Start_Date.ToString("MMMM dd,yyyy"))</div> 
} 

我曾嘗試以下方法,但拋出 「DateParameters」 命名空間的錯誤。

@Editable(item, x=> x.Start_Date, new DateParameters { Format = "MMMM dd,yyyy"}) 

此外,我有學習者以下的事情,但我怎麼能做到這一點?

要使字段可編輯需要兩個參數,這已用於使日期字段可編輯。第一個參數指示Glass.Mapper使哪個字段可編輯,然後第二個參數指定頁面不處於頁面編輯模式時的輸出。這允許您在兩種不同模式下控制字段的輸出。

任何人都可以幫助我嗎?

回答

0

你想要做的是提供默認的格式,但保持相同的主要玻璃東西。如下所示:

foreach(var item in Model) 
{ 
    <div>@Editable(item, x => x.Start_Date, x=>x.Start_Date.ToString("MMMM dd,yyyy"))</div> 
} 

這將使日期成爲編輯時的正常日期,但允許您將其格式化爲最終頁面。

+0

我已嘗試很好,但它拋出一個錯誤,如下面 值不能爲空。參數名:objectToSwitchTo 在Sitecore.Diagnostics.Assert.ArgumentNotNull(Object參數,字符串argumentName) 在Sitecore.Common.Switcher'2.Enter(TValue objectToSwitchTo) 在Glass.Mapper.Sc.GlassHtml。 MakeEditable [T](Expression'1 field,Expression'1 standardOutput,T model,Object parameters,Context context,Database database,TextWriter writer) 對此有何幫助? –

+0

如果這不起作用,我會檢查你的模型是否連接正確,等等。我剛剛確認了這裏的確切語法:http://glass.lu/Mapper/Sc/Tutorials/Tutorial5。如果你的模型沒有正確裝飾或者其他類似的東西,Glass不會'知道如何正確地將字段映射到樹中的項目。 –

-1

我已嘗試很好,但它拋出一個錯誤,如下面

**Value cannot be null. Parameter name: objectToSwitchTo 

    at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument, String argumentName) 
    at Sitecore.Common.Switcher2.Enter(TValue objectToSwitchTo) 
    at Glass.Mapper.Sc.GlassHtml.MakeEditable[T](Expression1 field, Expression1 standardOutput, T model, Object parameters, Context context, Database database, TextWriter writer)** 

任何幫助?

0

通常在這種情況下,我使用「普通視圖」和「經驗編輯」不同的代碼,因此對於普通視圖,你只需要沒有使它可編輯的顯示與格式的日期和經驗編輯您只需要編輯日期字段筆者不會在乎有經驗的編輯日期格式,所以你的代碼會是這樣:

foreach(var item in Model) 
{ 
    { 
    @if (Sitecore.Context.PageMode.IsExperienceEditorEditing) 
    { 
     <div>@Editable(item, x => x.Start_Date)</div> 
    } 
    else 
    { 
     <div>@item.Start_Date.ToString("MMMM dd,yyyy")</div> 
    } 
    } 
} 
+0

是的,我們可以做到這一點,但我想在單行代碼中實現。正如我感覺玻璃映射器應該提供這樣的功能。 –

+0

這將工作,如果你有標題字段我的意思是字符串字段,玻璃映射器期待你的日期字段,但在你的代碼,你提供它與格式化日期是字符串。 –