jim*_*utt 1 asp.net asp.net-mvc asp.net-mvc-routing
我正在看看ASP.NET 5和MVC 6,我正在使用默认的启动器模板.我现在已经建立了一个区域,我希望有一个"HomeController".因此,默认的HomeController不会放在一个区域中,然后在Areas/MyArea中会有HomeController.
Startup.cs中的以下配置显然不起作用:
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" });
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误信息:
AmbiguousActionException:匹配多个动作.以下操作匹配路由数据并满足所有约束:
MyProject.Controllers.HomeController.Index MyProject.Areas.MyArea.Controllers.HomeController.Index
在早期的MVC版本中,您应该能够通过在路由配置中定义名称空间来解决它,如本博客文章中所述:http://blog.falafel.com/duplicate-controller-names-aspnet-mvc-areas/
虽然这不适合我.如果我添加namespaces: new string[] { "MyProject.Controllers" }到默认路由,我收到以下错误:
错误CS1501方法'MapRoute'没有重载需要4个参数MyProject.ASP.NET 5.0 Startup.cs 81
如果我能就此得到一些建议,我将非常感激,能够在我的系统中使用多个HomeController会很高兴.
你有MyProject.Areas.MyArea.Controllers.HomeController.Index类的Area属性吗?
就像是
using Microsoft.AspNet.Mvc;
namespace MyProject.Areas.MyArea.Controllers
{
[Area("MyArea")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么url/MyArea/Home /应该路由到这个控制器,而/ Home /应该路由到不在某个区域的家庭控制器.
| 归档时间: |
|
| 查看次数: |
1508 次 |
| 最近记录: |