2017-03-14 12 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}} 또는 다른 값이됩니다.

나는 임의로 생각합니다. 나는 어디가 잘못되었는지 확신하지 못한다.

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가 항목 이드를 나타냅니다

@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" /> 
      } 

이것은 카트 컨트롤러 : 이것은 내보기

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

입니다 :

나는이 같은 모델을 가지고 유리 매퍼. 그래서, 대신 하나에

public virtual ID Id { get; set; } 

변화를 사용하는 : 올바른 아니었다

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

Sitecore.Data.Id를 사용하여 My ID가 Item에 따라 잘 매핑되었지만 양식 제출시 임의의 값을 제공했습니다. 감사 –