2016-07-25 83 views
-2

我想要add a step to the Kentico 9 e-Commerce Checkout process。 我去了页面>特殊页面>结帐,我添加了一个新的结帐页面。我向Kentico添加了一个名为EntityUse Code的新Web部件。电子商务添加结帐步骤

当我添加了一步,我得到这个错误:

Message: Unable to cast object of type 'ASP.cmsmodules_ecommerce_controls_shoppingcart_shoppingcartnonprofit_ascx' to type 'CMS.PortalControls.CMSAbstractWebPart'.

这里是我的代码:

public partial class CMSModules_Ecommerce_Controls_ShoppingCart_ShoppingCartNonProfit : ShoppingCartStep 
{ 
    #region "ViewState Constants" 

    private const string SHIPPING_OPTION_ID = "OrderShippingOptionID"; 
    private const string PAYMENT_OPTION_ID = "OrderPaymenOptionID"; 
    private const string FEDERAL_TAX_ID = "FederalTaxID"; 

    #endregion 


/// <summary> 
/// On page load. 
/// </summary> 
/// <param name="sender">Sender.</param> 
/// <param name="e">Event arguments.</param> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    lblTitle.Text = "Tax Exempt Order?"; 

    var fedTaxId = this.ShoppingCart.ShoppingCartCustomData.GetValue("federaltaxid"); 
    var entityUse = this.ShoppingCart.ShoppingCartCustomData.GetValue("entityusecode"); 
    if (fedTaxId != null) 
    { 
     tbTaxID.Text = fedTaxId.ToString(); 
    } 

    if (entityUse != null) 
    { 
     tbEntityUseCode.Text = entityUse.ToString(); 
    } 
} 

/// <summary> 
/// Back button actions 
/// </summary> 
public override void ButtonBackClickAction() 
{ 
    // Save the values to ShoppingCart ViewState 
    // this.ShoppingCartControl.SetTempValue(SHIPPING_OPTION_ID, this.drpShipping.SelectedValue); 
    //this.ShoppingCartControl.SetTempValue(PAYMENT_OPTION_ID, this.drpPayment.SelectedValue); 

    this.ShoppingCartControl.SetTempValue(FEDERAL_TAX_ID, tbTaxID.Text); 
    base.ButtonBackClickAction(); 
} 


public override bool ProcessStep() 
{ 
    try 
    { 
     this.ShoppingCart.ShoppingCartCustomData.SetValue("federaltaxid", tbTaxID.Text); 
     this.ShoppingCart.ShoppingCartCustomData.SetValue("entityusecode", tbEntityUseCode.Text); 


     // Update changes in database only when on the live site 
     if (!ShoppingCartControl.IsInternalOrder) 
     { 
      ShoppingCartInfoProvider.SetShoppingCartInfo(ShoppingCart); 
     } 
     return true; 
    } 
    catch (Exception ex) 
    { 
     lblError.Visible = true; 
     lblError.Text = ex.Message; 
     return false; 
    } 
} 
} 

回答

2

好像你是不是继承了正确的基类。 ShoppingCartStep用于旧购物车模型中的结帐步骤。您需要使用Web部件基类。我建议您尝试使用CMSCheckoutWebPart。您可以使用一些基本的结帐Web部件作为蓝图。您可以在〜CMS \ CMSWebParts \ Ecommerce \ Checkout下找到它们。

+0

谢谢!我做了这个KB:http://support.cloudcartconnector.com/hc/en-us/articles/212229983-Kentico-Avalara-Entity-Use-Codes –

相关问题