0

我必须使用 MVC3 实现搜索,用户可以在其中搜索任何单词或单词,现在如果我只写一个单词,它的工作正常,我的路线将类似于
/search/toy
,并且我的控制器方法可以识别玩具。

但是,如果我想搜索带有空格的东西,例如“kid toy”,那么路由有一个空格,并且在我的控制器方法中它不会将其识别为单词并抛出像
/search/kids%20toy这样的错误

有没有人在他的项目中实施这样的事情请帮忙。

提前致谢。

4

1 回答 1

0

看起来你有一个名为“玩具”的动作。

// maps to /search/
public class Search : Controller
{
    // maps to /search/toy
    public ActionResult Toy()
    {
    }
}

如果您根本没有修改默认路由,则需要使用 {controller}/{action}/{id}。(当然,如果你想做不同类型的路由,你必须研究路由。向谷歌询问 ASP.NET MVC 路由)

这是最快的方法:

// maps to /search
public class Search : Controller
{
    // maps to /search/for/{id}
    public ActionResult For(string id)
    {
        // search for id 
    }
}

可以用作 /search/for/kids%20toy。

或者,您可以将查询字符串用于命名为 id 以外的其他名称的参数。

// maps to /search
public class Search : Controller
{
    // maps to /search/ by default, check route config
    public ActionResult Index(string query)
    {
        // search for query
    }
}

为了能够使用 {controller}/{action}/{query} 或 {controller}/{query},您必须创建一条路线,但您可以通过 /search/?query=kids%20toy 解决该路线

于 2013-06-26T14:45:53.083 回答