2011-11-28 60 views
1

我正在开发使用Visual Studio 2010的MVC3应用程序。MVC3中的Aspx页面

我有一个aspx页面,我想显示控制器操作的结果。

我将此操作添加到家庭控制器。

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

这是aspx页面。

<%@ 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> 

当我运行应用程序,我可以使用url导航到该页面: http://localhost:3990/Home/EmployeePortal

的问题是 - 当我有aspx页面上的一个或多个服务器端控制,我在网站上遇到这个错误。 很抱歉,处理您的请求时发生错误。

当我从页面注释掉服务器端控件时,它显示正常。

aspx页面通过添加新视图菜单作为视图添加到应用程序中。

我需要一个aspx页面集成到MVC应用程序,这就是为什么我试图使用这个aspx页面。

我不知道我在做什么错。请帮忙。

+0

如果必须与传统的服务器控件等个别aspx页面简单的方法,你为什么与MVC? – Maess

+3

MVC的重点在于你没有服务器端控件。在这里阅读http://beta.asp.net/mvc –

回答

7

您不使用ASP.net MVC中的服务器端控件。

您可以使用HTML辅助方法:

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

服务器端控件不MVC支持,因为MVC不具备的ViewState的概念。

编辑:

如果您需要整合MVC和WebForms的,那么你需要创建独立的Web窗体页。这些不会是你的MVC应用程序中的“视图”。然后,您可以通过执行创建路线这些Web表单页面在您的Global.asax以下几点:

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

现在,当你去/产品/饮料它实际上会去那住在你的Products.aspx网页WebForms文件夹。

您创建此Products.aspx文件与正常webforms页面相同。这种缺点(如果没有改变)是你不能共享母版页/布局页面,所以你将不得不复制任何布局,并创建一个.master,使网页看起来类似。

+0

我需要将一些遗留的aspx页面集成到新的应用程序中。这就是为什么我试图包含服务器端控件。 – user1069683

+0

更新了我的答案。 – Dismissile

+0

非常感谢您的回复。 – user1069683

0

对MVC控制器使用的aspx页面RDLC视图

公众的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(); 

    }