【发布时间】:2020-02-13 01:20:15
【问题描述】:
我创建了一个简单的 MVC 应用程序。
我有一个控制器,即 HelathController。
在这个 HealthController 中,我有两种方法,即 Index 和 BodyMass
现在我创建了一个区域,即健康
在这个区域我有控制器,即 BodyMassController
这个 BodyMassController 有一个方法 Index。
我没有更改任何路由文件。
下面是我的HelathController
public class HealthController : Controller
{
public ActionResult Index()
{
return View();
}
// GET: Health
public ActionResult BodyMass()
{
return View();
}
}
这是我的 BodyMassController,它位于 Health 区域内。
public class BodyMassController : Controller
{
// GET: Health/Health
public ActionResult Index()
{
return Content("Hello " + text);
}
}
这是我的区域注册码。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Health_default",
"Health/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
全球.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
现在当我使用 Url /Health 它会自动调用 HelathController 的 Index 方法。
现在当我使用Url时Health/BodyMass它会在HelathController区域自动调用BodyMassController的Index方法。
如果我想调用 HelathController 的 BodyMass(),我需要做什么?
【问题讨论】:
-
你这里有冲突,你需要解决它。我建议重命名一些东西。
-
有没有其他办法解决?
-
您使用的任何方法都将非常糟糕,请注意安全并重命名。
-
试试这个:docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/… 但我也会建议 renamig 虽然你可以使用约束来实现你的目标,谢谢
-
您有 2 个相同的 URL,这是(如前所述)冲突。用户并不关心后台发生了什么。如果您在
/health/[whatever]上有 2 个页面,则需要进行更改。例如,您可以重命名您的Area、Health控制器,或者您可以将自定义路由应用于任何冲突的 URL,以使到达页面所需的 URL 不同。
标签: asp.net-mvc asp.net-mvc-routing