我正在尝试将Asp.Net Web表单网站更新为使用MVC 5.有一个购物车组件可以扩展配置文件提供程序。位于web.config中的此xml似乎在旧网站项目中自动生成代码,该项目提供购物车属性但在mvc版本中不执行任何操作:
<!-- Profile provider -->
<profile defaultProvider="SQLProfileProvider">
<providers>
<clear/>
<add name="SQLProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
<properties>
<!-- Define our shopping cart which is contained in customerManager and serialized as binary -->
<add name="ShoppingCart" allowAnonymous="true" type="customerManager.ShoppingCart, customerManager" serializeAs="Binary"></add>
</properties>
</profile>
因此以下代码失败:
Profile.ShoppingCart.AddItem(1500);
错误3'System.Web.Profile.ProfileBase'不包含'ShoppingCart'的定义,并且没有扩展方法'ShoppingCart'接受'System.Web.Profile.ProfileBase'类型的第一个参数可能是发现(您是否缺少using指令或程序集引用?)D:\ VirtualWeb2 \ VirtualWeb2 \ Controllers \ AccountController.cs 92 29 VirtualWeb2
购物车的原始代码是独立的DLL,但如果我真的需要,我可以访问源代码。如果可能的话,我更愿意通过配置来处理它。
我在网上看过很多帖子,找不到涵盖同一场景的任何内容。 知道为什么这个“ShoppingCart”属性在构建mvc项目时不能自动生成但在asp网络表单网站中工作?
答案 0 :(得分:1)
KingOfHypocrites回答(来自评论):
public static ShoppingCart GetCart(this Controller c)
{
var cart = c.Profile["ShoppingCart"];
return (customerManager.ShoppingCart)cart;
}