asp.net mvc querystring paramater 添加了一些阻止功能工作的字符

asp.net mvc querystring paramater add some character that prevent the functionality from working

我在简单的演示中工作,以便在 asp.net mvc 中进行搜索 一切正常,除了 url 包括阻止功能运行的 + 字符

url 看起来像这样 http://localhost:3189/products/Index?term=+a&name=Search

当我手动编辑它时,它工作正常 http://localhost:3189/products/Index?term=a&name=Search

这是我的模型

public class product
{
    public int id { get; set; }
    public string productName { get; set; }
    public string productModel { get; set; }
    public int productPrice { get; set; }
    public int ModelNum { get; set; }
}

我只是使用脚手架生成带有视图的控制器

之后这是我在控制器上的编辑

public ActionResult Index(string term)
{
    List<product> products = (from pr in db.products
                              where pr.productName.Contains(term) || pr.productName == null
                              select pr).ToList();

    if (products.Count <= 0 || products == null)
    {
        //select all
        return View(db.products);
    }
    //result of search
    return View(products);
}

这是我在索引视图中的视图代码

<form>
    <input type="search" name="term" value=" " id="term" placeholder="enter your products"/>
    <input type="submit" name="name" value="Search" />
</form>

我真的不知道为什么会发生这种行为,也不知道从哪里添加了 + 号,就像我手动删除它时一样,一切正常 url 看起来像这样 http://localhost:3189/products/Index?term=+a&name=Search

当我手动编辑它时,它工作正常 http://localhost:3189/products/Index?term=a&name=Search

这不是 adublicte,我只将一个值传递给 url,另一个问题是传递多个值

如@RobertMoskal 在评论中解释的那样,问题是由于您输入中的额外前导 space 所以我删除了 value 属性,因为他添加了额外的术语

<input type="search" name="term" value=" " id="term" placeholder="enter your products"/>

并且工作正常