user1069683
user1069683

Reputation: 19

Aspx page in MVC3

I am developing an MVC3 application using Visual Studio 2010.

I have an aspx page that I want to display as a result of a controller action.

I added this action to the home controller.

// GET: /Home/EmployeePortal
        public ActionResult EmployeePortal()
        {
            return View();
        }

This is the aspx page.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <title>EmployeePortal</title>
</head>
<body>
     <asp:TextBox ID="TextBox1" runat="server" />
    <div>
        This is employee portal
    </div>
</body>
</html>

When I run the application, I am able to navigate to this page by using the url: http://localhost:3990/Home/EmployeePortal

The problem is - When I have one or more server side control on the aspx page, I get this error on the website. Sorry, an error occurred while processing your request.

When I comment out the server side control from the page, it displays fine.

The aspx page was added as a view to the application via add new view menu.

I need an aspx page integrated into the MVC application and thats why I am trying to use this aspx page.

I am not sure what I am doing wrong. Please help.

Upvotes: 1

Views: 9794

Answers (2)

Tanavirrul haq
Tanavirrul haq

Reputation: 11

Easy way to use aspx page on mvc controller for rdlc view

public ActionResult RdlcReport( )
{
    IHttpHandler page = (IHttpHandler)System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/Report/ReportDataViewer.aspx", typeof(Page));
    HttpApplication controllerContextHttpContextGetService = (HttpApplication)ControllerContext.HttpContext.GetService(typeof(HttpApplication));
    page.ProcessRequest(controllerContextHttpContextGetService.Context);
    return new EmptyResult();
}

Upvotes: 0

Dismissile
Dismissile

Reputation: 33071

You don't use server side controls in ASP.net MVC.

You use the HTML Helper methods:

<%= Html.TextBox("TextBox1") %>

The server-side controls are not supported in MVC because MVC does not have the concept of ViewState.

Edit:

If you need to integrate MVC and WebForms, then you will need to create standalone Web Form pages. These will not be "Views" in your MVC application. You can then create routes to these web form pages by doing the following in your Global.asax:

public static void RegisterRoutes(RouteCollection routes) {
    routes.MapPageRoute(
        "WebFormProducts",
        "/products/{category}",
        "~/WebForms/Products.aspx"
    );
}

Now when you go to /products/beverages it will actually go to your Products.aspx page that lives in the WebForms folder.

You create this Products.aspx file the same as a normal webforms page. The disadvantage to this (if nothing has changed) is you can not share a Master page / Layout page so you will have to duplicate any layout and create a .master to make the pages look similar.

Upvotes: 7

Related Questions