2

私はUrl.Actionと、次のGETアクションへのリンクを作成しようとしている。しかし、これはどのURL Foo/Apply/BarDetails/Part/10?id=1を生成Url.Actionはこれらの値をどこから取得していますか?

public class FooController : Controller 
{ 
    [HttpGet] 
    [Route("Foo/Apply/BarDetails/Part/{id}")] 
    public IActionResult BarDetails(int id) 
    { 
    } 
} 

をそして、私の見解で、私は

Url.Action("BarDetails", "Foo", new {id = 1}) 

にURLを作成しています間違いなく私が望むものではありません! valuesパラメータを削除すると、URLのクエリ文字列部分が削除されます。私は、起動時に登録した唯一のルートは、私はASP.NETコアソースを見て持っていたと私はURLの「10」の部分はどこかなど"1" + "0"操作から来ていると思われる

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}"); 
}); 

ですルーティングコードは2つ以上のリポジトリに分割されており、それに従うのは難しいです。誰もこのURLの最後の部分がどのように生成されているのか知っていますか?そして、経路値で提供されるidに一致するように修正する方法はありますか?

+0

[ルート( "/ルート/" /ライセンス/適用/詳細/パート/ {id} ")]'? – juunas

+0

はい、値として '1'を指定したとき、ルートの' id'部分は '10'ですか? – Mourndark

答えて

1

以下のコードを実行しますこれは、ルーティングはまた、私は私のコントローラを構造化しまし方法に関連しています(このコントローラが書かれた)MVC5とASP.NETコア2の間で変化していることが判明しました。基本的には、可能なルートのリストがURLでソートされるので、Foo/Apply/BarDetails/Part/10がリストの先頭にソートされ、要求されたURLと一致するので、それが返されます。詳細についてはthis GitHub issueを参照してください。

-1

属性ベースルーティングでオプションのルートパラメータの最大および最小範囲を設定できます。

enter code here [Route("Licence/Apply/Details/Part/{id:int:max(1000):min(10)}}")] 
+1

これは質問と何が関係しているのですか? –

関連する問題