에서 세션 데이터 부분을 채 웁니다.는 어떻게 드라이버의 HTTP 세션에서 ContentPart를 반환하기 위해 노력하고있어 오차드 CMS
return ContentShape("Parts_Jumpstart_Unpersisted",
() => shapeHelper.Parts_Jumpstart_Unpersisted(ContentPart: part));
에 : 나는 카트 부분을 변경하는 경우
public class UnpersistedPartDriver : ContentPartDriver<UnpersistedPart>
{
public Localizer T { get; set; }
private readonly IHttpContextAccessor _httpContextAccessor;
public UnpersistedPartDriver(IHttpContextAccessor httpContextAccessor) {
T = NullLocalizer.Instance;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// This method is responsible for displaying your part in the frontend.
/// </summary>
/// <param name="part">Your part.</param>
/// <param name="displayType"></param>
/// <param name="shapeHelper"></param>
/// <returns></returns>
protected override DriverResult Display(UnpersistedPart part, string displayType, dynamic shapeHelper)
{
var session = _httpContextAccessor.Current().Session;
var cart = session["Cart"] as UnpersistedPart;
if (cart == null) {
cart = new UnpersistedPart();
session["Cart"] = cart;
}
return ContentShape("Parts_Jumpstart_Unpersisted",
() => shapeHelper.Parts_Jumpstart_Unpersisted(ContentPart: part));
}
// There is nothing to edit and update, so we don't need Editor methods.
}
public class UnpersistedPart : ContentPart
{
public UnpersistedPart()
{
this.Items = new List<Item>();
this.Items.Add(new Item { Id = 1, Title = "Book 1", Price = "130.00", Quantity = "1" });
this.Items.Add(new Item { Id = 2, Title = "Book 2", Price = "145.00", Quantity = "2" });
this.Items.Add(new Item { Id = 3, Title = "Book 3", Price = "150.00", Quantity = "3" });
}
public IList<Item> Items;
public string Total
{
get
{
return Items.Sum(i => i.Total).ToString();
}
}
public string SessionId;
}
[Serializable]
public class Item
{
public int Id;
public string Title;
public string Price;
public string Quantity;
public decimal Total { get { return decimal.Parse(Price) * int.Parse(Quantity); } }
}
가 :
return ContentShape("Parts_Jumpstart_Unpersisted",
() => shapeHelper.Parts_Jumpstart_Unpersisted(ContentPart: cart));
는 아무것도 표시되지 않습니다 여기 내 드라이버 및 ContentPart에 대한 코드입니다.
< 문서 클래스 = "컨텐츠 항목 책"모양-ID = "0"> </기사>
무엇 표트르는의를 잘 말할 세션에서 전체 ContentPart를 저장하지 않는, 그냥 식별자를 저장하는 것이 훨씬 낫다 – rfcdejong
고마워요. orchardcms에이 항목이 표시된 모듈이 있습니까? onloaded 이벤트에 대한 문서를 찾을 수 없습니다. –
다음은 핸들러에 대한 정보입니다 : http://docs.orchardproject.net/Documentation/Understanding-content-handlers.이 주제는 더 자세한 정보가 필요하지만 모든 것이 작동하는 방식에 대해 좀 더 통찰력을 줄 것입니다. –