【问题标题】:Populate data based on search criteria in asp.net mvc c#根据asp.net mvc c#中的搜索条件填充数据
【发布时间】:2012-02-02 15:55:33
【问题描述】:

我有一个产品列表页面。所有产品均基于 3 个标准进行展示:

  1. 当用户点击左侧菜单时
  2. 当用户在搜索文本框中输入并搜索时
  3. 当用户在品牌组合框中选择时

这是由于用户点击以下列表的考试网址:

  1. http://mysite.com/Products?dep=1&cat=2&tab=2 :显示 depId = 1 和 categoryID = 2 的产品。
  2. http://mysite.com/Products?brand=ABC_2&tab=2 : 显示品牌名称 = "ABC" 和品牌 id=2 的产品
  3. http://mysite.com/Products?tab=2&search=ABCD :显示商品名称=“ABCD”的商品

问题:当用户点击下面的每个链接时,页面会刷新,所以我不能将参数字符串混合在一起。我想将这 3 个条件结合在一起,意味着当用户点击 (1) 然后继续 (2) 和 (3) 时,网址将:

http://mysite.com/Products?dep=1&cat=2&brand=ABC_2&search=ABCD&tab=2

因此页面将显示 depID = 1、categoryID = 2、brand id = 2、brand name = ABC 和 product name = "ABCD" 的产品。

这就是我试图在我的 site.master 中获得 (3) 的内容:

function SearchClick() {
   window.location = "/Products?tab=2" + ($("#txtsearch").val() != "" || $("#txtsearch").val() 
   == "undefined" ? "&search=" + $("#txtsearch").val() : "");
}

提前致谢。

【问题讨论】:

    标签: jquery asp.net asp.net-mvc


    【解决方案1】:

    我注意到你正在使用 jQuery,我会建议:

    //using Request.Params
    string Dept = Request.Params["dep"];
    string Cat = Request.Params["cat"];
    string Brand = Request.Params["brand"];
    //capture the char after '?' or '&' and pass into Params["char"]
    //do your search function.
    

    This 链接会帮助你。

    如果您想在页面刷新后保留它,可以将其存储在Session

    string theDept = Request.Params["dep"];
    Session["dep"] = aa;    
    
    string dep = (string)Session["dep"];
    

    【讨论】:

    • 错误:对象引用未设置为对象的实例,声明为Session["dep"] = Request.Params["dep"].ToString();
    • Session["dep"] = theDept;Session["dep"] = aa;
    • 但是当我尝试使用会话时,在我的页面刷新后,它失去了会话值。
    • 你把会话放在哪里了?
    【解决方案2】:

    这应该让你开始

    后端:

    • 创建具有 3 个属性的 SearchModel:搜索、品牌、部门
    • 在搜索模型中执行 Product 操作

    前端:

    • 创建一个发布到上述产品操作的表单,确保它有一个提交按钮
    • 在该表单中创建一个 id/name = 'search' 的文本框
    • 在该表单中创建一个 ddl,id/name = 'dep'
    • 在该表单中创建一个隐藏字段,其中 id/name = 'brand'

    • 使用jquery,当用户点击左栏时更新隐藏字段

    • 用户随时使用 jquery 提交表单:点击提交按钮、更改 ddl 或单击左侧列

    【讨论】:

      【解决方案3】:

      如果您使用 ajax 加载页面,您也可以试试这个。

          $.ajax({
              url: '/Products',
              type: 'GET',
              dataType: 'json',
              cache: false,
              async: false,
              data: { dep: 1, brand: abc_2, search:abcd, tab:2 },
              success: function (data) {
              //Do your work here
                    },
              error: function (ex) {
                  alert('Error.');
              }
      
          });
      

      您通常会将 3 个条件放在同一页面中,例如搜索文本框、品牌/部门下拉菜单,然后单击按钮将触发此查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 2020-09-06
        • 2021-06-04
        • 1970-01-01
        • 2021-08-28
        相关资源
        最近更新 更多