C# 电子商务添加签出步骤

C# 电子商务添加签出步骤,c#,kentico,C#,Kentico,我正在努力。 我进入页面>特殊页面>签出,并添加了一个新的签出页面。我向Kentico添加了一个名为EntityUse代码的新web部件 当我添加该步骤时,会出现以下错误: 消息:无法将类型为“ASP.cmsmodules\u ecommerce\u controls\u shoppingcart\u shoppingcart非营利性\u ascx”的对象强制转换为类型为“CMS.PortalControls.CMSAbstractWebPart” 这是我的密码: public partial

我正在努力。 我进入页面>特殊页面>签出,并添加了一个新的签出页面。我向Kentico添加了一个名为EntityUse代码的新web部件

当我添加该步骤时,会出现以下错误:

消息:无法将类型为“ASP.cmsmodules\u ecommerce\u controls\u shoppingcart\u shoppingcart非营利性\u ascx”的对象强制转换为类型为“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;
    }
}
}
公共部分类CMS模块\电子商务\控件\购物车\购物车非营利组织:购物车步骤
{
#区域“视图状态常数”
private const string SHIPPING\u OPTION\u ID=“OrderShippingOptionID”;
private const string PAYMENT\u OPTION\u ID=“OrderPaymenOptionID”;
私有常量字符串FEDERAL\u TAX\u ID=“FederalTaxID”;
#端区
/// 
///在页面加载时。
/// 
///发送者。
///事件参数。
受保护的无效页面加载(对象发送方、事件参数e)
{
lblTitle.Text=“免税订单?”;
var fedTaxId=this.ShoppingCart.ShoppingCartCustomData.GetValue(“federaltaxid”);
var entityUse=this.ShoppingCart.ShoppingCartCustomData.GetValue(“entityusecode”);
如果(fedTaxId!=null)
{
tbTaxID.Text=fedTaxId.ToString();
}
if(entityUse!=null)
{
tbEntityUseCode.Text=entityUse.ToString();
}
}
/// 
///后退按钮动作
/// 
公共覆盖无效按钮BackClickAction()
{
//将值保存到ShoppingCart ViewState
//this.ShoppingCartControl.SetTempValue(SHIPPING\u OPTION\u ID,this.drpShipping.SelectedValue);
//this.ShoppingCartControl.SetTempValue(付款选项ID,this.drpPayment.SelectedValue);
this.ShoppingCartControl.SetTempValue(联邦税ID,tbTaxID.Text);
base.ButtonBackClickAction();
}
公共覆盖bool ProcessStep()
{
尝试
{
this.ShoppingCart.ShoppingCartCustomData.SetValue(“federaltaxid”,tbTaxID.Text);
this.ShoppingCart.ShoppingCartCustomData.SetValue(“entityusecode”,tbEntityUseCode.Text);
//仅在实时站点上更新数据库中的更改
如果(!ShoppingCartControl.IsInternalOrder)
{
ShoppingCartInfoProvider.SetShoppingCartInfo(ShoppingCart);
}
返回true;
}
捕获(例外情况除外)
{
lblError.Visible=真;
lblError.Text=ex.消息;
返回false;
}
}
}

您似乎没有继承正确的基类
ShoppingCartStep
用于旧购物车模型中的结账步骤。您需要使用web部件基类。我建议尝试使用
CMSCheckoutWebPart
。您可以使用一些基本的结帐web部件作为蓝图。您可以在~CMS\CMSWebParts\Ecommerce\Checkout下找到它们

谢谢!我做了这个: