我正在尝试为搜索我的数据库的用户建立一个链接,并将以下脚本放在我的索引页面上,以便我可以使用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)
{
...
}
如何格式化链接以使其到达我想要的位置?
答案 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}")]
在我的控制器中,似乎有帮助