MVC 6仅显示白页的视图

时间:2016-01-15 14:24:13

标签: c# .net model-view-controller

当我尝试在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();
        }
    }
}

与一个调用主布局页面的空白视图相结合。

2 个答案:

答案 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 }
        );
    }
}