![](/img/trans.png)
[英]How to stop area from automatically being added to the URL when using Url.Action?
[英]Result of Url.Action() when Area is used in Controller
我正在閱讀Microsoft文檔,其中解釋了有關Area
用於路由https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.2#areas的用法。
有1個部分我無法理解。
app.UseMvc(routes =>
{
routes.MapAreaRoute("duck_route", "Duck",
"Manage/{controller}/{action}/{id?}");
routes.MapRoute("default", "Manage/{controller=Home}/{action=Index}/{id?}");
});
控制器:
using Microsoft.AspNetCore.Mvc;
namespace MyApp.Namespace4
{
[Area("Duck")]
public class UsersController : Controller
{
public IActionResult GenerateURLInArea()
{
// Uses the 'ambient' value of area
var url = Url.Action("Index", "Home");
// returns /Manage
return Content(url);
}
public IActionResult GenerateURLOutsideOfArea()
{
// Uses the empty value for area
var url = Url.Action("Index", "Home", new { area = "" });
// returns /Manage/Home/Index
return Content(url);
}
}
}
為什么在GenerateURLInArea()
動作中返回/Manage
而在GenerateURLOutsideOfArea()
返回/Manage/Home/Index
呢?
@itminus突出顯示,執行結果相反。 我也已經證實這是真的。
所以這應該是預期的行為
using Microsoft.AspNetCore.Mvc;
namespace MyApp.Namespace4
{
[Area("Duck")]
public class UsersController : Controller
{
public IActionResult GenerateURLInArea()
{
// Uses the 'ambient' value of area
var url = Url.Action("Index", "Home");
// returns /Manage/Home/Index
return Content(url);
}
public IActionResult GenerateURLOutsideOfArea()
{
// Uses the empty value for area
var url = Url.Action("Index", "Home", new { area = "" });
// returns /Manage
return Content(url);
}
}
}
這實際上更有意義:)
@itminus還為該修復程序發出了罰單https://github.com/aspnet/AspNetCore.Docs/issues/12221/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.