我必须使用 MVC3 实现搜索,用户可以在其中搜索任何单词或单词,现在如果我只写一个单词,它的工作正常,我的路线将类似于
/search/toy
,并且我的控制器方法可以识别玩具。
但是,如果我想搜索带有空格的东西,例如“kid toy”,那么路由有一个空格,并且在我的控制器方法中它不会将其识别为单词并抛出像
/search/kids%20toy这样的错误
有没有人在他的项目中实施这样的事情请帮忙。
提前致谢。
我必须使用 MVC3 实现搜索,用户可以在其中搜索任何单词或单词,现在如果我只写一个单词,它的工作正常,我的路线将类似于
/search/toy
,并且我的控制器方法可以识别玩具。
但是,如果我想搜索带有空格的东西,例如“kid toy”,那么路由有一个空格,并且在我的控制器方法中它不会将其识别为单词并抛出像
/search/kids%20toy这样的错误
有没有人在他的项目中实施这样的事情请帮忙。
提前致谢。
看起来你有一个名为“玩具”的动作。
// 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 解决该路线