c# - 无法转换类型异常的对象
问题描述
这个问题刚刚出现,但是我并没有修改与此相关的代码。所以不太确定如何修复它。
这是短消息:
无法将类型为“<>f__AnonymousType16 1[Nop.Web.Models.Media.PictureModel]]”的对象
2[Nop.Web.Models.Media.PictureModel,System.Collections.Generic.List
转换为类型“<>f__AnonymousType42[Nop.Web.Models.Media.PictureModel,System.Collections.Generic.List
1[Nop.Web.Models.Media.PictureModel]]”。
这是完整的例外:
System.InvalidCastException:无法将类型为“<>f__AnonymousType16 1[Nop.Web.Models.Media.PictureModel]]”的对象
2[Nop.Web.Models.Media.PictureModel,System.Collections.Generic.List
转换为类型“<>f__AnonymousType42[Nop.Web.Models.Media.PictureModel,System.Collections.Generic.List
1[Nop.Web.Models.Media.PictureModel]]”。在 Nop.Core.Caching.MemoryCacheManager.Get[T](String key) 在 Nop.Core.Caching.CacheExtensions.Get[T](ICacheManager cacheManager, String key, Int32 cacheTime, Func1 acquire) at Nop.Core.Caching.CacheExtensions.Get[T](ICacheManager cacheManager, String key, Func
1 acquire) 在 Nop.Web.Controllers .ProductController.PrepareProductDetailsPageModel(Product product, ShoppingCartItem updatecartitem, Boolean isAssociatedProduct, Nullable1 childProductId) at Nop.Web.Controllers.ProductController.ProductDetails(Int32 productId, String c, String s, Int32 updatecartitemid) at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker。 AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async。AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f( ) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker 的 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)。<>c__DisplayClass21.<>c__DisplayClass2b.b__1c() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker。 <>c__DisplayClass21.b__1e(IAsyncResult asyncResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult,System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid 的 ExecuteCoreState innerState)1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid `1.CallEndDelegate(IAsyncResult asyncResult) 在 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl (IExecutionStep 步骤)在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously)
这是异常指向的代码:
model.DefaultPictureZoomEnabled = _mediaSettings.DefaultPictureZoomEnabled;
//default picture
var defaultPictureSize = isAssociatedProduct
? _mediaSettings.AssociatedProductPictureSize
: _mediaSettings.ProductDetailsPictureSize;
//prepare picture models
var productPicturesCacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_DETAILS_PICTURES_MODEL_KEY,
product.Id, defaultPictureSize, isAssociatedProduct, _workContext.WorkingLanguage.Id,
_webHelper.IsCurrentConnectionSecured(), _storeContext.CurrentStore.Id);
var cachedPictures = _cacheManager.Get(productPicturesCacheKey, () =>
{
var pictures = _pictureService.GetPicturesByProductId(product.Id);
var defaultPicture = pictures.FirstOrDefault();
var defaultPictureModel = new PictureModel
{
ImageUrl = _pictureService.GetPictureUrl(defaultPicture, defaultPictureSize, !isAssociatedProduct),
FullSizeImageUrl = _pictureService.GetPictureUrl(defaultPicture, 0, !isAssociatedProduct),
Title =
string.Format(_localizationService.GetResource("Media.Product.ImageLinkTitleFormat.Details"),
model.Name),
AlternateText =
string.Format(
_localizationService.GetResource("Media.Product.ImageAlternateTextFormat.Details"),
model.Name),
};
//"title" attribute
defaultPictureModel.Title = (defaultPicture != null &&
!string.IsNullOrEmpty(defaultPicture.TitleAttribute))
? defaultPicture.TitleAttribute
: string.Format(_localizationService.GetResource("Media.Product.ImageLinkTitleFormat.Details"),
model.Name);
//"alt" attribute
defaultPictureModel.AlternateText = (defaultPicture != null &&
!string.IsNullOrEmpty(defaultPicture.AltAttribute))
? defaultPicture.AltAttribute
: string.Format(_localizationService.GetResource("Media.Product.ImageAlternateTextFormat.Details"),
model.Name);
//all pictures
var pictureModels = new List<PictureModel>();
foreach (var picture in pictures)
{
var pictureModel = new PictureModel
{
ImageUrl =
_pictureService.GetPictureUrl(picture,
_mediaSettings.ProductThumbPictureSizeOnProductDetailsPage),
FullSizeImageUrl = _pictureService.GetPictureUrl(picture),
Title =
string.Format(
_localizationService.GetResource("Media.Product.ImageLinkTitleFormat.Details"),
model.Name),
AlternateText =
string.Format(
_localizationService.GetResource("Media.Product.ImageAlternateTextFormat.Details"),
model.Name),
};
//"title" attribute
pictureModel.Title = !string.IsNullOrEmpty(picture.TitleAttribute)
? picture.TitleAttribute
: string.Format(_localizationService.GetResource("Media.Product.ImageLinkTitleFormat.Details"),
model.Name);
//"alt" attribute
pictureModel.AlternateText = !string.IsNullOrEmpty(picture.AltAttribute)
? picture.AltAttribute
: string.Format(
_localizationService.GetResource("Media.Product.ImageAlternateTextFormat.Details"),
model.Name);
pictureModels.Add(pictureModel);
}
return new {DefaultPictureModel = defaultPictureModel, PictureModels = pictureModels};
});
model.DefaultPictureModel = cachedPictures.DefaultPictureModel;
model.PictureModels = cachedPictures.PictureModels;
我试图将图片发送到这样的列表,但它没有用。
var pictures = _pictureService.GetPicturesByProductId(product.Id).ToList();
任何人都知道这里可能发生了什么,我以前从未遇到过这类错误。谢谢
解决方案
推荐阅读
- sql - 查找所有非常规的单引号
- alignment - 如何在 XSL-FO 中垂直对齐长表的文本底部
- text - 如何将值与 UltraEdit 上的同一列对齐?
- java - 在 Oracle 数据库中存储不同类型数据的最佳体验
- php - Laravel,composer 需要 laravel/ui,移除 laravel/framework v7.25.0
- php - 检索远程用户的 Wikipedia 搜索
- javascript - 如何从 HTML 文件中更改文本
- f# - 使用元组列表定义模式匹配函数时出现 F# 异常错误
- c# - 禁用与当前视图对应的当前按钮wpf c#
- ballerina - 如何处理foreach中的xml?--> 不兼容的类型:预期的 'xml',找到 '(xml|string)'