ルーティングが次のように設定されている MVC 6 プロジェクトがあります。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}/{closeOnSubmit?}");
});
次のようなタグヘルパーを使用してハイパーリンクを作成しようとしています:
<a asp-controller="MyController" asp-action="Create" asp-route-closeOnSubmit="true" class="fa fa-plus indent-15">+</a>
ページが作成され、リンクの上にマウスをhttp://localhost/MyController/Create
置くと、closeOnSubmit パラメーターがないと報告されます。Chrome の開発者ツールで HTML を調べると、次のようになります。
<a href class="fa fa-plus indent-15">+</a>
closeOnSubmit パラメータをルートに適切に追加するにはどうすればよいですか?
編集:
MVC ルーティングを完全には理解していないため、残念ながら誤った情報を提供してしまいました。最初にアプリを作成したとき、次のデフォルト ルートがありました。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
これを機能させようとしたとき、ルートに closeOnSubmit が追加されていなかったため、正しくルーティングされていないのではないかと考えました。ダリンの答えを読んだ後、私はそれを理解し、ルートに追加した後に間違いなく間違っていました. ただし、この特定のルートでは、id を渡す必要はありません。id ではなく closeOnSubmit を使用するようにデフォルト ルートを変更しようとしましたが、リンクが正しく作成されないという問題は解決しませんでした。
トラブルシューティング中に、ルートが思ったよりもさらに間違っていることもわかりました。私が取り組んでいるページは、に行くことによって生成されhttp://localhost/ControllerOne/Create
ます。ハイパーリンクが指すページはhttp://localhost/ControllerTwo/Create'. Even though my asp-controller tag is set to ControllerTwo, all of my hyperlinks are showing as
http://ControllerOne/Create ` です。href 属性が空のためだと思いますが、href 属性が空になる原因を知りたいです。