http://blog.falafel.com/duplicate-controller-names-aspnet-mvc-areas/
遵循这个建议,现在正在运行。但是,当命中/ area / home / index时,正确的控制器操作会触发,但是它使用的是根网站的Index.cshtml而不是Area文件夹中的Index.cshtml!任何想法如何解决"此?
或者有更好的方法来处理路由以完成同样的事情吗?
目标:
http://example.net/ - > HomeController / Index(root)
http://example.net/area1 - > area1.HomeController.Index / area1' Index.cshtml
http://example.net/area1/NotIndex - > area1.HomeController.NotIndex / area1' NotIndex.cshtml
http://example.net/area2 - > area2.HomeController.Index / area2的Index.cshtml
等...
我尝试了不同区域的属性路由。
[RouteArea("ProductReuse")]
[Route("ProductReuse")]
public partial class ProductReuseController : BaseProductReuseController
{
[HttpGet]
[Route("Index")]
public ActionResult Index()
{
if (SessionUserLogin == null) return LoginActionResult(SessionAppName);
var serviceResponse = _productReuseService.IndexQuery(SessionUserId);
var response = _mapper.Map<IndexViewModel>(serviceResponse);
return View(response);
}
...
}
这很接近,但你仍然需要一个看起来像这样的网址: http://example.net/ProductReuse/Index
如果你试图点击http://example.net/ProductReuse,它会爆炸。
TIA
答案 0 :(得分:0)
我发现您可以在路由属性中添加空字符串路由名称。
[RouteArea("ProductReuse")]
[Route("ProductReuse")]
public partial class ProductReuseController : BaseProductReuseController
{
[HttpGet]
[Route("Index")]
[Route("")] // Use an empty name to set the default page...
public ActionResult Index()
{
if (SessionUserLogin == null) return LoginActionResult(SessionAppName);
var serviceResponse = _productReuseService.IndexQuery(SessionUserId);
var response = _mapper.Map<IndexViewModel>(serviceResponse);
return View(response);
}
...
}