Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当querystring为空时,如何对特定类别进行计数?_C#_Asp.net_Master Pages - Fatal编程技术网

C# 当querystring为空时,如何对特定类别进行计数?

C# 当querystring为空时,如何对特定类别进行计数?,c#,asp.net,master-pages,C#,Asp.net,Master Pages,我在母版页/默认页上有一个菜单,其中列出了x个类别。 我想计算一下每个类别中有多少种产品 例: 香蕉(20) 苹果(8) 草莓(5) 到目前为止,我有: var listSubMenu=\u account.GetAllProductCategories(); var sb=新的StringBuilder(); 对于(int i=0;i

我在母版页/默认页上有一个菜单,其中列出了x个类别。 我想计算一下每个类别中有多少种产品

例:

香蕉(20)

苹果(8)

草莓(5)

到目前为止,我有:

var listSubMenu=\u account.GetAllProductCategories();
var sb=新的StringBuilder();
对于(int i=0;i”,r[“cat_id”]、r[“cat_name”]、count.Rows.count));
}
active_sub_products.Text=sb.ToString();
我的数据表:
公共数据表GetAllProductCategories()
{
常量字符串请求=
@"
从产品类别中选择*
其中cat_活动=1
按类别名称ASC订购
";
使用(var query=newmysqlcommand(请求))
{
返回uu dbConnect.GetData(查询);
}
}
显然,我需要特定的categoryid,但是我如何在不运行QueryString的情况下请求它,因为它位于默认页面上。 我是不是遗漏了什么


非常感谢。

您应该循环浏览您的类别并从中获取ID。不是来自querystring,因为它与您的页面相关(正如您自己编写的)

根据您的示例,我希望_account.GetAllProductCategories()会返回您需要的ID

在这种情况下,您可以使用

var catid = listSubMenu.id;

但是id取决于您的帐户返回的内容的类型。

如果我在GetAllProductCategories()中对您的结果模式的猜测是正确的

[“猫的id”][“猫的名字”]

[1] [苹果]

[2] [香蕉]

[3] [橙子]

var cat_id = r["cat_id"]
或者可能

var cat_id = Int32.Parse(r["cat_id"])
我也会改变:

sb.AppendFormat(String.Format(@"<li{0}><a href='/account/products.aspx?categoryid={0}'>{1} ({2})</a></li>", r["cat_id"], r["cat_name"], count.Rows.Count));
sb.AppendFormat(String.Format(@“”,r[“cat_id”]、r[“cat_name”]、count.Rows.count));
致:

sb.AppendFormat(String.Format(@“
  • ”,cat_id,r[“cat_name”],count.Rows.count));
    (有两个变化,(1)对
  • {property html syntax}和(2)r[“cat_id”]对cat_id{您已经在变量和字符串中有了它。Format不介意为您重铸字符串})


    除此之外,我建议您研究类似LinqToSql的ORM,以便您可以直接使用对象…

    首先在母版页中呈现类别链接:

    **调用GetAllProductCategories时,结果的每一行将至少有两列(cat_id和cat_name)

    当您通过索引(var r=listSubMenu.Rows[i])获取每一行时,它返回的行将具有该记录的cat_id和cat_名称,我添加了(var name=r[“cat_name”])作为说明

    如果您对此进行调试并逐步执行,您应该会看到通过for循环的每次迭代都会为id变量提供下一个类别的id,然后在该行中使用该id(var count=\uu account.GetSpecificCategory(id);)

    var listSubMenu=\u account.GetAllProductCategories();
    var sb=新的StringBuilder();
    对于(int i=0;i”,r[“cat_id”]、r[“cat_name”]、count.Rows.count));
    }
    active_sub_products.Text=sb.ToString();
    
    然后进入实际页面“products.aspx”的另一个文本框或区域

    var sbProducts=new StringBuilder();
    var selectedCat=Request.QueryString[“categoryid”];
    如果(!string.IsNullOrWhitespace(selectedCat))
    {
    var selectedCatId=Int32.Parse(selectedCat);
    var products=\uu account.GetSpecificCategory(selectedCatId);
    对于(int j=0;j
    **注意:调用Request.QueryString[“value”]时,它将:

  • 返回null,指示不存在具有匹配名称的querystring参数

  • 返回表示value=与url结尾或下一个&found之间内容的字符串


  • **这不是完整的生产质量代码,您应该对查询字符串值进行其他检查,例如,切换到tryparse,检查返回的产品数量并显示“未找到该类别的产品”。。。etc**

    我认为你们的结构不适合。要准确地了解它,我必须了解“\uuu帐户”是什么,以及您可以使用哪些重要的属性/方法。是的,li{0},只是因为我在回复列表中的css类,没有别的。忘了擦掉那个。关于将r[“cat_id”]替换为cat_id,只有我,用我的手指快速移动抱歉:)隐马尔可夫模型。。。对所问问题的另一种看法。。。您是否正在尝试确定如何确定用户单击的链接,以便您可以显示相应的产品?由于没有querystring值,因此无法查看该链接的工作方式。我需要从我的类别数据库表中检索特定id。我需要对特定类别进行计数。显然,如果querystring有一个值是很容易的,但是因为它在masterpage/defaultpage上,所以它没有。如何补偿querystring值?对GetAllProductCategories()的调用不需要类别Id,因此不需要querystring值。本节在母版页上。第二个代码块不在母版页中,而是在Products.aspx页面中,假设只有当有类别要显示时(即,querystring中的categoryid),您才在Products页面上
    sb.AppendFormat(String.Format(@"<li{0}><a href='/account/products.aspx?categoryid={0}'>{1} ({2})</a></li>", r["cat_id"], r["cat_name"], count.Rows.Count));
    
    sb.AppendFormat(String.Format(@"<li><a href='/account/products.aspx?categoryid={0}'>{1} ({2})</a></li>", cat_id, r["cat_name"], count.Rows.Count));
    
    var listSubMenu = __account.GetAllProductCategories();
    var sb = new StringBuilder();
    for (int i = 0; i < listSubMenu.Rows.Count; i++)
    {
        var r = listSubMenu.Rows[i];
    
        var id = Int32.Parse(r["cat_id"]);
        var name = r["cat_name"];
    
        var count = __account.GetSpecificCategory(id);
    
        sb.AppendFormat(String.Format(@"<li{0}><a href='/account/products.aspx?categoryid={0}'>{1} ({2})</a></li>", r["cat_id"], r["cat_name"], count.Rows.Count));
    
    }
    active_sub_products.Text = sb.ToString();
    
    var sbProducts = new StringBuilder();
    var selectedCat = Request.QueryString["categoryid"];
    
    if(!string.IsNullOrWhitespace(selectedCat))
    {
        var selectedCatId = Int32.Parse(selectedCat);
        var products = __account.GetSpecificCategory(selectedCatId);
    
        for(int j = 0; j < products.Rows.Count; j++)
        {
             // ... do product listing stuff here
             // sbProducts.Append(...);
        }
    }
    else
    {
        sbProducts.AppendLine("Invalid Category Id Selected!");
    }
    active_selected_products.Text = sbProducts.ToString();