C# 填充列表视图

C# 填充列表视图,c#,asp.net,listview,casting,populate,C#,Asp.net,Listview,Casting,Populate,在我的程序中,我有一个列表视图,其中我使用数据库中的数据填充它,通过选择其中一个列表视图项,我被重定向到一个页面,在该页面中,将根据在第一个列表视图中选择的项的id创建和填充第二个列表视图。此id通过第一个列表视图中的超链接获得: 填充第二个列表视图的代码如下所示: public partial class SubCategories : System.Web.UI.Page { BASubCategory bs = new BASubCategory(); void Bin

在我的程序中,我有一个列表视图,其中我使用数据库中的数据填充它,通过选择其中一个列表视图项,我被重定向到一个页面,在该页面中,将根据在第一个列表视图中选择的项的id创建和填充第二个列表视图。此id通过第一个列表视图中的超链接获得:

填充第二个列表视图的代码如下所示:

 public partial class SubCategories : System.Web.UI.Page
{
    BASubCategory bs = new BASubCategory();
    void BindListView()
    {
        Guid cID = (Guid)ViewState["CatID"];
        List<SubCategory> subcatlist = (List<SubCategory>)bs.GetSubCategoryCategory(cID);
        SubCategoryListView.DataSource = subcatlist;
        SubCategoryListView.DataBind();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        ViewState["CatID"] = Request["id"];
        BindListView();
    }

}
公共部分类子类别:System.Web.UI.Page
{
BASubCategory bs=新的BASubCategory();
void BindListView()
{
Guid cID=(Guid)视图状态[“CatID”];
List subcatlist=(List)bs.getsubcategory类别(cID);
SubCategory ListView.DataSource=子类别列表;
子类别ListView.DataBind();
}
受保护的无效页面加载(对象发送方、事件参数e)
{
视图状态[“CatID”]=请求[“id”];
BindListView();
}
}
当我尝试运行此操作时,我在以下位置获得一个错误:

Guid cID=(Guid)视图状态[“CatID”]

我从哪里得到错误 “指定的强制转换无效”

有谁能给我一些建议来解决这个问题吗?

你可以试试:

Guid cID = new Guid(ViewState["CatID"].ToString());
ViewState似乎返回一个无法转换为Guid的对象。如果您尝试上述方法,您应该能够轻松地从ViewState中“CatID”的字符串表示形式创建Guid

另外,在回答您下面的评论时,为什么不试试这个而不是


非常感谢您的帮助。我尝试了您的建议,并消除了错误,但是我出现了以下错误消息:对象引用未设置为对象的实例可能是我从超链接获取的id错误吗?超链接代码:此超链接位于单独的web表单中,其中类别id动态存储,并由前面提到的用户从第二个web表单中获取。我认为
id
查询字符串参数中的内容实际上是字符串“CategoryId”。我将更新我的答案,同时考虑你的评论。
<a href='<%# ResolveClientUrl("~/SubCategories.aspx") %>?id=<%#Eval("CategoryId") %>'><%#Eval("CategoryName")%></a>