2017-03-14 31 views
0

我遇到模型綁定問題,我的id是Sitecore.Data.ID類型。提交表單後,所有其他字段都會綁定正確的數據,但是我的ID會更改爲其他內容。模型綁定在通過表單提交時無法正常工作Sitecore.Data.ID類型

例如,在表單中,隱藏字段'id'的值爲2fb3169c-8b3f-4618-ac78-6170fd0eb297,在提交給CartController後,該值變爲{{68CE2980-7611-422B-96E1-29C4CC0132D5}}{{82F7914C-34D6-4009-B301-53C1499774A3}}或其他。

我認爲它是隨機的。我不知道我錯在哪裏。

我有這樣的型號:

[SitecoreType(AutoMap = true,Cachable = true)] 
public class Book : Item 
{ 
    public virtual ID Id { get; set; } 

    [SitecoreField(IsRequired = true)] 
    public virtual string Name { get; set; } 

    [SitecoreField(IsRequired = true)] 
    public virtual double Price { get; set; } 

    [SitecoreField(IsRequired = true)] 
    [StringLength(50, MinimumLength = 5)] 
    public virtual string Description { get; set; } 
} 

這是我的看法:

@model Book 
      using (Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName, FormMethod.Post) 

) 
     { 
      @Html.Sitecore().FormHandler("Cart", "Index") 


       @Html.HiddenFor(x => Model.Id) 

      <div> 
       @Html.DisplayFor(x => book.Name) 
       @Html.EditorFor(x => book.Name, new { @class = "bold" }) 

      </div> 
      <div> 
       @Html.DisplayFor(x => book.Price) 
       @Html.EditorFor(x => book.Price, new { @class = "bold" }) 

      </div> 
      <div> 
       @Html.DisplayFor(x => book.Description) 
       @Html.EditorFor(x => book.Description, new { @class = "bold" }) 

      </div> 
      <input type="submit" /> 
      } 

這是車控制器:

public class CartController : GlassController 
{ 
     [HttpPost] 
     public ActionResult Index(Book book) 
     { 
      string id = book.Id.ToString(); 
      if (!string.IsNullOrEmpty(id)) 
      { 
       book = SitecoreContext.GetItem<Book>(new Guid(id), false, true); 
       return PartialView("~/Views/Cart/details.cshtml", book); 
      } 
      return Redirect("http://google.com"); 
     } 
    }   
+0

@HishaamNamooya我做了調試,並結合書對象的字段中的值後發現是不正確的。 Guid部分是後期階段。 –

+0

如果您將Id重命名爲CartId,問題是否仍然存在? –

+0

@HishaamNamooya不,它沒有工作,仍然獲得Id的隨機值。 –

回答

2

ID代表的商品ID玻璃映射器。因此,而不是使用這一個

public virtual ID Id { get; set; } 

改變它:

[SitecoreId] 
public virtual Guid Id { get; set; } 
+0

根據Item,使用Sitecore.Data.Id,我的ID得到了很好的映射,但是在表單提交時它給出了隨機值。謝謝 –