The behavior is determined, since ViewLocationFormats and PartialViewLocationFormats are defined as follows, and the aspx page will be considered first.
ViewLocationFormats = new[] { "~/Views/{1}/{0}.aspx", "~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.aspx", "~/Views/Shared/{0}.ascx" }; PartialViewLocationFormats = ViewLocationFormats;
PartialViewLocationFormats should exclude aspx definitions in my opinion. Overriding the default WebFormViewengine may solve this problem. Note: you need to register this in the Application_Start()
method
public class ASPXViewEngine: WebFormViewEngine { public ASPXViewEngine() { base.PartialViewLocationFormats = new string[] { "~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.ascx" }; base.AreaPartialViewLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.ascx", "~/Areas/{2}/Views/Shared/{0}.ascx", }; } }
Ahmad source share