這適用于 .NET 5.0 MVC Web 應用程式。
我有一個控制器來管理我網站管理區域中的代理型別:
[Area("Admin")]
public class AgencyTypesController : Controller
{
public async Task<IActionResult> Index()
{
...
}
public async Task<IActionResult> Create()
{
...
}
public async Task<IActionResult> Edit(Guid id)
{
...
}
}
當前 url 在/Admin/AgencyTypes,但我希望它是/Admin/Agencies/Types,所以我在我的啟動中有這個:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "agencytypes",
pattern: "{area:exists}/Agencies/Types/{action=Index}",
defaults: new { controller = "AgencyTypes", action = "Index" }
);
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
當我導航到 時/Admin/Agencies/Types,我的路由似乎作業正常,它命中了 AgencyTypesController 中的 Index 操作。
問題是我的頁面有指向 Create 和 Edit 方法的鏈接,使用 Url.Action
@Url.Action("Create", "AgencyTypes", new { Area = "Admin" })
@Url.Action("Edit", "AgencyTypes", new { Area = "Admin", id = ID })
而不是這些 url 被呈現為/Admin/Agencies/Types/Createand /Admin/Agencies/Types/Edit/id,它仍然使用 url/Admin/AgencyTypes/Create和/Admin/AgencyTypes/Edit
我還需要做些什么才能Url.Action使用我的自定義路線?還是我繪制路線的方式有問題?
uj5u.com熱心網友回復:
首先添加更具體的路線:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "agencytypes",
pattern: "{area:exists}/Agencies/Types/{action=Index}",
defaults: new { controller = "AgencyTypes", action = "Index" }
);
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
這是因為當它創建一個 url 時,它會通過你定義的路由并找到第一個匹配的路由。
因此,當您首先添加這樣的通用模式時{area:exists}/{controller=Home}/{action=Index}/{id?},它將位于串列的第一個,因此它始終是第一個匹配的模式
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333243.html
標籤:C# 。网 asp.net-mvc .net核心
上一篇:如何將“范圍”值映射到身份宣告?
下一篇:從FTP下載并使用流提供結果
