无法从 int 转换为 asp.net 中的礼品卡分页错误

Posted

技术标签:

【中文标题】无法从 int 转换为 asp.net 中的礼品卡分页错误【英文标题】:Cannot convert from int to gift card paging error in asp.net 【发布时间】:2022-01-17 22:04:08 【问题描述】:

我需要将 TotalCount 添加到项目,但出现无法将 int 转换为giftcardpaging 的错误。请告诉我解决方案

 int TotalCount = count;
 var items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); 
 List<GiftCardPaging> item = items.ToList();
 item.Add(TotalCount);
 return item;

GiftCardPaging的定义如下:

public class GiftCardPaging 
    public int TotalCount  get; set;  
    public string PhoneNumber  get; set;  
    public string Email  get; set;  

【问题讨论】:

那么,GiftCardPaging的属性是什么? 字符串,长,双等 item.Add() 正在添加到List - 如果你想设置GiftCardPaging 的属性,你需要做一些更像item[index].MyProperty = TotalCount 的事情 @AndrewCorrigan 我收到一个错误,例如无法将 int 转换为 GiftcardPaging 那是因为GiftCardPaging 不是整数。 GiftCardPaging 是一个对象,由各种属性组成。这就像给建筑商一块砖,并期待一座大教堂神奇地出现。如果您在GiftCardPaging 的定义中进行编辑,我也许可以了解您正在尝试做的事情 【参考方案1】:

现在所有信息都可用了,这似乎只是对对象缺乏了解。

您已经知道如何计算页数,但问题是您没有正确分配总数。

您的代码偏离轨道的第一点在这里:

var items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); 
List<GiftCardPaging> item = items.ToList();

items 已经输入为List&lt;GiftCardPaging&gt; - 下一行没有任何作用。所以这可能只是:

List<GiftCardPaging> items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); 

好的,现在我们已经解决了这部分问题,进入主要问题。

您遇到的错误会告诉您问题所在。您不能从整数转换为 GiftCardPaging

当做类似的事情时:

myList.Add(myNewItem); 

myNewItem 需要与您在声明列表时使用的类型相同。

所以问题变成了:

您是否要创建一个新的GiftCardPaging 项目(已设置TotalCount 并将其添加到列表中)?在哪种情况下:

int TotalCount = count;
List<GiftCardPaging> items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); 
GiftCardPaging item = new GiftCardPaging();
item.TotalCount = TotalCount;
items.Add(item);
return items;

或者,您想从列表中提取某个项目并为其设置值吗?在这种情况下:

int TotalCount = count;
List<GiftCardPaging> items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); 
GiftCardPaging item = items[0]; //for the sake of argument, I'll get the first from the list
item.TotalCount = TotalCount;    
return item;

但我认为,在所有这些之前,你的班级结构似乎有问题。我认为最好是这样设置:

public class GiftCard 
    private int GiftCardID; 
    private Contact ContactDetails; //This references a class called Contact where you have the contact details like phone number
    private List<GiftCardPage> Pages; //GiftCardPage could be an object with properties like HeaderText or Content
    //Add any other details relevant to the gift card

    //Throw a class constuctor here (i.e.). 
    public GiftCard(int id, Contact contact) 
        GiftCardID = id;
        ContactDetails = contact;
        Pages = new List<GiftCardPage>();
    

    //Add pages here 
    public void AddPage(GiftCardPage page)
        Pages.Add(page);
    

    //Get Page Count
    public int TotalPages() 
         return Pages.Count();
    



public class Contact
     // name, telephone, etc


public class GiftCardPage
     //Page specific stuff

【讨论】:

以上是关于无法从 int 转换为 asp.net 中的礼品卡分页错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MVC .ASP NET 中将变量从字符串转换为 int [重复]

无法将“X”类型的对象转换为“X”类型 - ASP.NET

从 ASP.NET 将网页转换为图像

从 C# ASP.NET 中的数据集进行邮件合并

礼品卡代码算法

将 ASP.NET MVC 从 4 升级到 5 的奇怪错误