我必须用MVC3实现搜索,用户可以在这里搜索任何单词,现在如果我只写一个单个单词,它就可以正常工作,我的路线会像
/搜索/玩具
玩具是通过我的控制器方法识别的。
但是,如果我想搜索像"儿童玩具"这样有空格的东西,那么route有一个空格,在我的控制器方法中,它无法将其识别为单词并抛出错误,如
/搜索/儿童%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/childs%20toy。
或者,您可以将querystring用于命名为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}或{controler}/{query},您必须创建一个路由,但您可以通过/搜索/?query=childs%20to