Asp.net mvc 通过表单提交时,Sitecore.Data.ID类型的模型绑定无法正常工作

Asp.net mvc 通过表单提交时,Sitecore.Data.ID类型的模型绑定无法正常工作,asp.net-mvc,sitecore,sitecore8,sitecore-mvc,glass-mapper,Asp.net Mvc,Sitecore,Sitecore8,Sitecore Mvc,Glass Mapper,我遇到模型绑定问题,我的id类型为Sitecore.Data.id。提交表单后,所有其他字段都与正确的数据绑定,但我的Id会更改为其他内容 例如,在表单中,隐藏字段“id”的值为2fb3169c-8b3f-4618-ac78-6170fd0eb297,提交给CartController后,该值变为{{68CE2980-7611-422B-96E1-29C4CC0132D5}或{82F7914C-34D6-4009-B301-53C1499774A3}或其他内容 我认为这是随机的。我不知道我哪里出

我遇到模型绑定问题,我的id类型为Sitecore.Data.id。提交表单后,所有其他字段都与正确的数据绑定,但我的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" />
            }
@模型书
使用(Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName,FormMethod.Post)
)
{
@Html.Sitecore().FormHandler(“购物车”、“索引”)
@HiddenFor(x=>Model.Id)
@DisplayFor(x=>book.Name)
@EditorFor(x=>book.Name,新{@class=“bold”})
@DisplayFor(x=>book.Price)
@EditorFor(x=>book.Price,新{@class=“bold”})
@DisplayFor(x=>book.Description)
@EditorFor(x=>book.Description,新的{@class=“bold”})
}
这是购物车控制器:

 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");
      }
  }        
公共类CartController:GlassController
{
[HttpPost]
公共行动结果索引(书籍)
{
string id=book.id.ToString();
如果(!string.IsNullOrEmpty(id))
{
book=SitecoreContext.GetItem(新Guid(id),false,true);
返回PartialView(“~/Views/Cart/details.cshtml”,book);
}
返回重定向(“http://google.com");
}
}        

Id表示玻璃映射器中的项目Id。因此,与其使用

public virtual ID Id { get; set; }
将其更改为此:

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

Id表示玻璃映射器中的项目Id。因此,与其使用

public virtual ID Id { get; set; }
将其更改为此:

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

@HishaamNamooya我进行了调试,在绑定book对象后发现字段中的值不正确。Guid部分是后期。如果您将Id重命名为CartId,问题是否仍然存在?@HishaamNamooya不,它不起作用,仍然获取Id的随机值。隐藏输入中首先出现的Id,sitecore项目id?@HishaamNamooya是id是sitecore项目id。@HishaamNamooya我进行了调试,在绑定book对象后发现字段中的值不正确。Guid部分是后期。如果将Id重命名为CartId,问题是否仍然存在?@HishaamNamooya否,它不起作用,仍然为Id获取随机值。隐藏输入中首先出现的Id是否为sitecore项目Id?@HishaamNamooya是的Id为sitecore项目Id。我的Id根据项目映射得很好,使用Sitecore.Data.Id,但在表单提交时,它给出了随机值。ThanksMy Id使用Sitecore.Data.Id根据条目映射得很好,但是在表单提交时它给出了随机值。谢谢