2011-11-28 59 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(); 

    }