Asp.net core mvc MVC CORE 2.0检查控制器的路径是否存在和视图是否存在,如果不存在,请转到own 404页面

Asp.net core mvc MVC CORE 2.0检查控制器的路径是否存在和视图是否存在,如果不存在,请转到own 404页面,asp.net-core-mvc,Asp.net Core Mvc,我正在尝试检查我所在的路径是否存在,例如是否存在 www.mysite.com/foobar 或 www.mysite.com/foobar/delete 存在 我尝试了两周前发布的这个方法,它似乎在互联网上非常流行 但这在代码中失败了 ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null); 必须转换成 ViewEngineResult viewResult

我正在尝试检查我所在的路径是否存在,例如是否存在

www.mysite.com/foobar

www.mysite.com/foobar/delete

存在

我尝试了两周前发布的这个方法,它似乎在互联网上非常流行

但这在代码中失败了

ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null);
必须转换成

ViewEngineResult viewResult = Microsoft.AspNetCore.Mvc.ViewEngines.Engines.FindView(ControllerContext, viewName, null);
使用Microsoft.AspNetCore.Mvc.ViewEngines,即使使用
也能识别
ViewEngines
位于顶部,但是
引擎
不在其中,因此我有错误消息 “命名空间ViewEngines中不存在类型或命名空间名称引擎”


您知道如何通过其他方式检查路径或修复此代码以使其正常工作吗?

在mvc core中,您必须将ICompositeViewEngine服务注入控制器。mvc核心的体系结构是基于DI的

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewEngines;

namespace DoctorCode.BookStore.Controllers
{
    public class HomeController : Controller
    {
        private readonly ICompositeViewEngine _viewEngine;

        public HomeController(ICompositeViewEngine viewEngine)
        {
            _viewEngine = viewEngine;
        }

        public IActionResult Index()
        {
            var viewName = "Index";
            var isMain = true; //or flase for PartialView

            var viewResult = _viewEngine.GetView(executingFilePath: null, viewPath: viewName, isMainPage: isMain);
            var originalResult = viewResult;
            if (!viewResult.Success)
            {
                viewResult = _viewEngine.FindView(ControllerContext, viewName, isMainPage: isMain);
            }

            //do stuff ...

            return View();
        }
    }
}