Can't access views from different project using Razor View Engine
Asked Answered
A

1

1

I have a use case where I have many web projects that all use the same management general-purpose web pages, so I started to isolate my views to a separate project where all solutions can reference and use.

Because currently, I have to copy-paste the view files across solutions whenever I have a new change.

Based on this answer, I added a new custom view engine, and then added the path to the location where my views live (in a separate project beside my main project).

    public class CustomViewEngine : RazorViewEngine
    {
        public CustomViewEngine()
        {
            MasterLocationFormats = new string[]
            {
        "~/Views/{1}/{0}.aspx",
        "~/Views/{1}/{0}.ascx",
        "~/Views/Shared/{0}.aspx",
        "~/Views/Shared/{0}.ascx",
        "~/Shared.Views/Views/{1}/{0}.aspx",
        "~/Shared.Views/Views/{1}/{0}.ascx",

            };
            ViewLocationFormats = new string[]
            {
        "~/Views/{1}/{0}.aspx",
        "~/Views/{1}/{0}.ascx",
        "~/Views/Shared/{0}.aspx",
        "~/Views/Shared/{0}.ascx",
        "~/../Shared.Views/Views/{1}/{0}.aspx",
        "~/../Shared.Views/Views/{1}/{0}.ascx",
            };
      }
    }

When including the following:

"~/../Shared.Views/Views/{1}/{0}.aspx",
"~/../Shared.Views/Views/{1}/{0}.ascx",

I am getting the following exception:

Cannot use a leading .. to exit above the top directory. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Cannot use a leading .. to exit above the top directory.

My file structure.

Solution
   Shared.Views
      Views
         Profiles
            create.cshtml
            delete.cshtml
            edit.cshtml
            details.cshtml
   MainProject
      Global.asax

What is the correct path I have to add to tell MVC to look for views in my separate project?

Atherton answered 14/12, 2020 at 23:38 Comment(0)
A
0

You can’t reference files in another project like you’re doing. Check out Razor Class Libraries if you’re using ASPNET Core 2.1+

Amaleta answered 15/12, 2020 at 6:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.