2

I'm wondering whether other people are having this same issue or whether it's just me !

Given I have a View Purchases.aspx and a partial view Purchases.ascx:

Within Purchases.aspx if I do: Html.RenderPartial("Purchases") then WebDev.WebServer40.exe basically closes.

I'm guessing that this is caused by a Stack Overflow because RenderPartial cannot determine what it's supposed to render (.aspx or .ascx).

Is this a bug, is it a defined behaviour, or is it just happening for me?

1 Answer 1

7

It is defined behaviour since the ViewLocationFormats and PartialViewLocationFormats are defined as follows and an aspx page will be be looked at first.

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

PartialViewLocationFormats = ViewLocationFormats;

PartialViewLocationFormats should exclude the aspx definitions in my opinion. Overriding the default WebFormViewengine can resolve this. Note, you will 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",
                    };
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.