在ASP MVC5中,按名称和类别搜索不能同时保留url中的两个参数
本文关键字:url 保留 参数 两个 搜索 MVC5 ASP 不能 | 更新日期: 2023-09-27 18:05:13
我在网上找不到这个问题的答案:
我正在按NAME进行搜索。另外,我提供了一些CATEGORY的按钮。原因是,我希望用户按名称搜索,并按类别缩小搜索范围。它可以这样工作,但不能反过来。
这里是详细信息,由url解释(因为这是我要问的):
场景1:
新页面=> l * calhost/产品/指数
按名称搜索=> l * calhost/产品/索引?searchTerm =机
在按名称搜索后按类别actionlink进行缩小=> l * calhost/产品? searchTerm = machine&土壤类别=
场景2(问题在这里):
新页面=> l * calhost/产品/指数
按类别按钮只列出该类别下的产品=> l * calhost/产品?类别=水泥
按名称插入搜索词以查找按上述类别列出的产品=> l * * * calhost/产品?searchTerm =机* *
不再附加searchTerm=machine,它取代了url中已经存在的category=Cement。
请告诉我如何解决这个问题。
这里是控制器:
//
// GET: /Product/
public ActionResult Index(string searchTerm = null, string category = null)
{
ViewBag.SearchTerm = searchTerm;
ViewBag.Category = category;
var CategoryList = new List<string>();
var CategoryQuery = from c in _db.Products
orderby c.Category.Name
select c.Category.Name;
CategoryList.AddRange(CategoryQuery.Distinct());
ViewBag.CategoryList = CategoryList;
var products = from p in _db.Products
select p;
if (!String.IsNullOrEmpty(searchTerm))
{
products = products.Where(p => p.Name.Contains(searchTerm));
}
if (!String.IsNullOrEmpty(category))
{
products = products.Where(p => p.Category.Name == category);
}
return View(products);
}
下面是搜索栏的视图:
<form method="get">
<input class="span5" id="appendedInputButton" type="text" placeholder="Search Blog" name="searchTerm">
<button class="btn btn-primary sicon-search sicon-white" type="submit"><i>Search</i></button>
</form>
下面是类别按钮的代码:
@foreach (var item in ViewBag.CategoryList)
{
string name = item;
string cssClass = "";
if (ViewBag.Category == name)
{
cssClass = "active";
}
<li>
@Html.ActionLink(name, "Index", new { searchTerm = ViewBag.SearchTerm, category = name }, new { @class = cssClass })
</li>
}
当您提交搜索栏表单时,只有一个数据被发布- searchTerm
。为了让控制器同时使用searchTerm
和category
,表单上还需要category
。
我建议添加category
作为隐藏输入,并将其设置为URL中的category值。
<form method="get">
@Html.Hidden("category", @Request.QueryString["category"])
<input class="span5" id="appendedInputButton" type="text" placeholder="Search Blog" name="searchTerm">
<button class="btn btn-primary sicon-search sicon-white" type="submit"><i>Search</i></button>
</form>