title: ASP.NET MVC - Returning a PartialView to Ajax along with another object
body: <p>I am writing a single page ajax app with ASP.NET MVC - making heavy use of jQuery.  I do something similar to the following throughout the app:</p>
  
  <p>JS:</p>
  
  <pre><code>$.ajax({
      type: "GET",
      url: "/Home/GetSomePartialView/",
      data: someArguments,
      success: function (viewHTML) { 
          $("#someDiv").html(viewHTML); 
      },
      error: function (errorData) { onError(errorData); }
  });
  </code></pre>
  
  <p>Controller C#:</p>
  
  <pre><code>public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
  {
  
      return PartialView("_CaseManager");
  }
  </code></pre>
  
  <p>This works great.  The <code>viewHTML</code> (in the ajax <code>success</code> function) is returned as a string and I can shove it on the page no problem.</p>
  
  <p>Now what I would like to do is to return not only the PartialView HTML string, but also some sort of status indicator.  This is a permissions thing - for instance, if someone tries to get to a portion of they app they don't have permission to, I want to return a different PartialView than they asked for and also display a message in a popup window telling them why they got an View different from what they asked for.</p>
  
  <p>So - to do this, I would like to do the following:</p>
  
  <p>Controller C#:</p>
  
  <pre><code>public ActionResult GetSomePartialView(SomeArgumentModel someArguments)
  {
      ReturnArgs r = new ReturnArgs();
  
      bool isAllowed = CheckPermissions(); 
  
      if (isAllowed) 
      {
          r.Status = 400; //good status ... proceed normally
          r.View = PartialView("_CaseManager");
      }
      else
      {
          r.Status = 300; //not good ... display permissions pop up
          r.View = PartialView("_DefaultView");
      }
  
      return Json(r);
  }
  
  public class ReturnArgs
  {
      public ReturnArgs()
      {
      }
  
      public int Status { get; set; }
      public PartialViewResult View { get; set; }
  }
  </code></pre>
  
  <p>JS:</p>
  
  <pre><code>$.ajax({
      type: "GET",
      url: "/Home/GetSomePartialView/",
      data: someArguments,
      success: function (jsReturnArgs) { 
  
          if (jsReturnArgs.Status === 300) { //300 is an arbitrary value I just made up right now
              showPopup("You do not have access to that.");
          }
  
          $("#someDiv").html(jsReturnArgs.View); //the HTML I returned from the controller
      },
      error: function (errorData) { onError(errorData); }
  });
  </code></pre>
  
  <p>This <strong>SORTA</strong> works right now.  I get a good object in JavaScript (what I am expecting to see), however I cannot see how to get at the full HTML string of the <code>jsReturnArgs.View</code> property.  </p>
  
  <p>I am really just looking for the same string that would be returned if I were just returning the <code>PartialView</code> by itself.</p>
  
  <p>(As I mentioned at the beginning, this is a single page app - so I can't just redirect them to another View).</p>
  
  <p>Thanks in advance for any help!</p>