2016-05-02 15 views
0

データベースを検索しているユーザーのリンクを作成しようとしています。インデックスページに次のスクリプトを挿入して、Razorを使用できます。
ユーザーは、このコードを実行するテキストボックスに入力します。 (私の.jsファイルから呼び出されます)Razor Urlのリンク形式が正しくない

<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> 

問題は、それがに行くURLが
http://localhost:57719/Index/Cars?query=test

であり、私はそれがどこへ行きたいか、私は私のコントローラで
http://localhost:57719/Cars/test

であるということですこのようなカスタムルートを使用します。

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

リンクをフォーマットして、どこに行きたいのですか?

答えて

0

は、このコード行を試してみてください:

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

は申し訳ありませんが助けるように見えた私のコントローラでは、

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

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

を変更しましたが、それはあるに行くリンクhttp:// localhost:57719/Index/Carstest – Jago

+0

その後、文字列を連結するときにスラッシュを追加するだけです。それは簡単な修正でなければなりません。目的は次のようなものを生成することです: – alltej

+0

localhost:57719/Index/Cars/test – alltej

0

私は解決策を見つけました。

「Razor Url.Action」の後に生成されたURLを確認すると、「?」の後にすべてを置き換えることができます。

最も洗練されたソリューションではなく、その仕事をしています。

<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> 

また

私は

関連する問題