在路由mvc中发送空间



我必须用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

最新更新