Razor Url链接格式不太对

时间:2016-05-02 18:14:01

标签: c# asp.net-mvc razor

我正在尝试为搜索我的数据库的用户建立一个链接,并将以下脚本放在我的索引页面上,以便我可以使用Razor。
用户键入运行此段代码的文本框。 (从我的.js文件中调用)

<script>
    function search(query) {
        let url = '@Url.Action("Cars", "Index", new { query = "__query__" })';
        url = url.replace('__query__', query);
        console.log(url);
        window.location.href = url;
    }
</script>

问题是它所到的网址是
http://localhost:57719/Index/Cars?query=test

我希望它去的地方是 http://localhost:57719/Cars/test

在我的控制器中,我使用自定义路线,例如

    [HttpGet]
    [Route("Cars/{Query}")]
    public ActionResult Index(string Query = null)
    {
        ...
    }

如何格式化链接以使其到达我想要的位置?

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

let url = '@Url.Action("Cars", "Index")'; // remove the new { query = "__query__" }
url = url + query; //Just need to concatenate

答案 1 :(得分:0)

我找到了解决方案。

查看Razor Url.Action之后生成的网址我可以在&#34;之后更换整个内容?&#34;

不是最优雅的解决方案,而是完成其工作。

<script>
    function search(query) {
        let url = '@Url.Action("Index", "Cars", new { query = "__query__" })';
        console.log(url);
        url = url.replace('?query=__query__', '/' + query);
        console.log(url);
        window.location.href = url;
    }
</script>

另外

我改变了

[Route("Cars/{Query}")]  

[Route("~/Cars/{Query}")]

在我的控制器中,似乎有帮助