当我尝试在MVC 6中的某个区域中创建一个新视图时,它只显示一个白页。 Home / Index动作工作正常,这个动作将击中控制器,但从不显示视图。我可以返回内容并获得显示,但是当我尝试返回视图时它会中断。有什么建议吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using PmData.Models;
// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
namespace PlantManagement.Areas.Cms.Controllers
{
[Area("Cms")]
public class AssetsController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
}
}
与一个调用主布局页面的空白视图相结合。
答案 0 :(得分:2)
我发现了这个问题。可悲的是,这是因为我对MVC 6 / vNext如此陌生,所以我觉得很傻。这是一个问题,他们是页面上的项目的问题,但没有app.UseDeveloperExceptionPage();在startup.cs的配置中添加它永远不会显示实际错误,只给我一般500错误和白页。一旦我添加它开始产生错误,我就可以使用并给我我需要的东西。
答案 1 :(得分:0)
我有类似的问题,并通过
解决了a)在您拥有的每个区域中创建一个_ViewStart.cshtml文件。即Areas / Cms / Views / _ViewStart.cshtml
b)在此_ViewStart.cshtml文件中添加
@{
Layout = "~/Areas/Cms/Views/Shared/_LayoutCms.cshtml
}
c)将_LayoutCms.cshtml添加到Areas / Cms / Views / Shared
d)在此文件中添加对整个站点布局的引用
@{
Layout = "~/Views/Shared/_Layout.cshtml
}
以及任何其他特定区域的布局代码。
修复了我的空白页问题。希望你的也是
除了我的上一个答案,请尝试以下步骤
e)确保您的Cms区域文件夹中有区域注册设置,即Areas / Cms / CmsAreaRegistration.cs
public class CmsAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Cms";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Cms_default",
"Cms/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
f)在App_Start / RouteConfig.cs中,确保通过添加AreaRegistration.RegisterAllAreas()来注册所有区域,如下所示。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas(); //Add this//
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}