我认为避免您遇到的问题的方法是使用不同的视图名称。您可能不应该有两个文件名仅在扩展名上不同的视图。但是,如果您真的想要一个严格的 Page = View, Control = Partial 映射,只需通过从 WebFormViewEngine 继承来创建自己的 ViewEngine 并更改视图位置格式:
public class MyWebFormViewEngine : WebFormViewEngine {
public MyWebFormViewEngine() {
base.ViewLocationFormats
= new string[] {"~/Views/{1}/{0}.aspx", "~/Views/Shared/{0}.aspx" };
base.PartialViewLocationFormats
= new string[] { "~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.ascx" };
}
}
然后在 Application_Start() 中将其配置为您的视图引擎:
// Call this method during Application_Start to setup your view engine
internal static void SetupViewEngines() {
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new MyWebFormViewEngine());
}