Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 714525
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T05:05:05+00:00 2026-05-14T05:05:05+00:00

In the method CreateView() (check my View Engine below) or in my custom action

  • 0

In the method CreateView() (check my View Engine below) or in my custom action filter (also below) I have to somehow check if the View we are requesting is a ViewUserControl. Because otherwise I get an error saying

“A master name cannot be specified when the view is a ViewUserControl.”

when I have “modal=true” in QueryString and the View request is ViewUsercontrol because you cannot set master page on ViewUserControls (obviously).

This is my custom view engine code right now:

    public class PendingViewEngine : VirtualPathProviderViewEngine
    {
        public PendingViewEngine()
        {
            // This is where we tell MVC where to look for our files. 
            /* {0} = view name or master page name       
             * {1} = controller name      */
            MasterLocationFormats = new[] {"~/Views/Shared/{0}.master", "~/Views/{0}.master"};
            ViewLocationFormats = new[]
                                    {
                                        "~/Views/{1}/{0}.aspx", "~/Views/Shared/{0}.aspx", "~/Views/Shared/{0}.ascx",
                                        "~/Views/{1}/{0}.ascx"
                                    };
            PartialViewLocationFormats = new[] {"~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.ascx"};
        }

        protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
        {
            return new WebFormView(partialPath, "");
        }

        protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
        {
            return new WebFormView(viewPath, masterPath);
        }
}

My action filter:

public class CanReturnModalView : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // setup the request, view and data
        HttpRequestBase request = filterContext.RequestContext.HttpContext.Request;

        bool modal = false;

        if (request.QueryString["modal"] != null)
            modal = bool.Parse(request.QueryString["modal"]);

        if (filterContext.Result is ViewResult)
        {
            ViewResult view = (ViewResult) (filterContext.Result);

            // replace the view Master page file with Modal Masterpage
            if (modal)
                view.MasterName = "AdministrationModal";

            filterContext.Result = view;
        }
        else if (filterContext.Result is RedirectToRouteResult)
        {
            RedirectToRouteResult redirect = (RedirectToRouteResult) filterContext.Result;
            // append modal route value to the redirect result if modal was requested
            if (modal)
                redirect.RouteValues.Add("modal", true);

            filterContext.Result = redirect;
        }
    }
}

The above ViewEngine fails on calls like this:

<% Html.RenderAction("Display", "MyController", new { zoneslug = "some-zone-slug" });%>

The action I am rendering here is this:

        public ActionResult Display(string zoneslug)
        {
            WidgetZone zone;

            if (!_repository.IsUniqueSlug(zoneslug))
                zone = (WidgetZone) _repository.GetInstance(zoneslug);
            else
            {
// do something here
            }

// WidgetZone used here is WidgetZone.ascx, so a partial
            return View("WidgetZone", zone);
        }

I cannot use RenderPartial because you cannot send route values to RenderPartial the way you can to RenderAction. To my knowledge there is no way to provide RouteValueDictionary to RenderPartial() like the way you can to RenderAction().

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T05:05:06+00:00Added an answer on May 14, 2026 at 5:05 am

    You can achieve the described behaviour by calling PartialView instead of view:

    Create your view like you would now:

      <% Html.RenderAction("PartialIndex", new { test = "input" }); %>
    

    As you can see there is nothing special to it.

    Then in your controller action simply call PartialView instead of View:

    public ActionResult PartialIndex(string test)
    {
        var viewResult = PartialView("PartialIndex", (object)test);
        return viewResult;
    }
    

    And also override the View method to overrule the mastername when the modal parameter is passed into the query string.

    public bool IsModal
    {
        get
        {
            var modalParameter = Request.QueryString["modal"];
    
            if (string.IsNullOrEmpty(modalParameter))
                return false;
    
            bool modalValue;
            var success = bool.TryParse(modalParameter, out modalValue);
    
            return success && modalValue;
        }
    }
    
    protected override ViewResult View(string viewName, string masterName, object model)
    {
        if (IsModal)
            masterName = "Alternate";
        return base.View(viewName, masterName, model);
    }
    

    The View method override is only hit when you render an actual view (and not a partial one), so it is safe to assume that a masterName can be set.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 368k
  • Answers 368k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Yes, you can! Rewrite your JS code into function with… May 14, 2026 at 5:05 pm
  • Editorial Team
    Editorial Team added an answer Relative URL's without a leading slash are relative to the… May 14, 2026 at 5:05 pm
  • Editorial Team
    Editorial Team added an answer The simplest approach is to go over these lines (assuming… May 14, 2026 at 5:05 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.