asp.net-mvc-2 - 渲染与父 View 同名的部分 - WebDev.WebServer40.exe 崩溃

标签 asp.net-mvc-2

我想知道是否其他人也有同样的问题,还是只有我一个人遇到同样的问题!

假设我有一个 View Purchases.aspx 和一个部分 View Purchases.ascx:

Purchases.aspx 中,如果我这样做:Html.RenderPartial("Purchases") 那么 WebDev.WebServer40.exe 基本上会关闭。

我猜测这是由堆栈溢出引起的,因为 RenderPartial 无法确定它应该渲染的内容(.aspx 或 .ascx)。

这是一个错误,是一个定义的行为,还是只是发生在我身上?

最佳答案

这是已定义的行为,因为 ViewLocationFormats 和 PartialViewLocationFormats 定义如下,并且将首先查看 aspx 页面。

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

PartialViewLocationFormats = ViewLocationFormats;

在我看来,PartialViewLocationFormats 应该排除 aspx 定义。覆盖默认的 WebFormViewengine 可以解决此问题。请注意,您需要在 Application_Start() 方法

中注册它
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",
                    };
    }
}

关于asp.net-mvc-2 - 渲染与父 View 同名的部分 - WebDev.WebServer40.exe 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3363847/

相关文章:

c# - 无法从用法中推断出类型参数。尝试明确指定类型参数

c# - 无法使用 ASP.NET MVC2 上传文件

asp.net-mvc - jQuery + Ajax + 加载旋转图像 = 太快了!

c# - MVC 2 : How to use Html. 下拉列表?

asp.net-mvc-2 - MVC2 自定义 HTML 帮助程序和 <% : %> Syntax

c# - 在 MVC 2 中验证 REST 请求

entity-framework - 属性 'Id'是对象关键信息的一部分,不可修改

asp.net-mvc-2 - nginx/mono 2.8 上的 ASP.Net MVC 2

javascript - 仅继承母版页中的 javascript 代码

c# - 关于模拟和最小起订量框架的新手问题