gpt4 book ai didi

asp.net-mvc-4 - MVC4 使用区域时的默认路由

转载 作者:行者123 更新时间:2023-12-04 02:18:14 25 4
gpt4 key购买 nike

我正在尝试使用 MVC 应用程序中的区域,我希望默认路由将解析为管理区域内的 HomeController,但它解析为根站点中的家庭 Controller 。
我添加了 admin HomeController 的命名空间,但它仍然解析为根 HomeController。

我的路线配置:

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] {"MvcApplicationAreas.Areas.Admin.Controllers"}

);
}
}

管理区域路由
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}

HomeController - 管理区域
namespace MvcApplicationAreas.Areas.Admin.Controllers
{
public class HomeController : Controller
{

public ActionResult Index()
{
return View();
}

}
}

知道为什么它不能正确解决吗?
谢谢

最佳答案

我已经测试了您的区域注册代码,它可以工作并选择正确的 Controller 。但是,即使使用了正确的 Controller , View 分辨率也会在根文件夹中找到 View 。

为了进行测试,我在我的区域主 Controller 中使用了以下主索引操作:

public ActionResult Index()
{
return View(model: "Admin area home controller");
}

然后我在/Views/Home 中的 index.chstml:
Root View: @Model

和我在/Areas/Admin/Views/Home 中的 index.cshtml:
Admin Area view: @Model

运行时,输出为:

Root View: Admin area home controller



因此该路由使管理区域中的家庭 Controller 运行,但随后 View 解析继续并找到根 View 而不是管理 View 。

所以最后确实是 View 选择错了,所以你的问题和 How to set a Default Route (To an Area) in MVC一样.

关于asp.net-mvc-4 - MVC4 使用区域时的默认路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com