MVC3中的Aspx页面

use*_*683 1 asp.net-mvc

我正在使用Visual Studio 2010开发MVC3应用程序.

我有一个aspx页面,我想通过控制器操作显示.

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

// GET: /Home/EmployeePortal
        public ActionResult EmployeePortal()
        {
            return View();
        }
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

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

问题是 - 当我在aspx页面上有一个或多个服务器端控件时,我在网站上收到此错误.很抱歉,在执行您的要求时发生了一个错误.

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

通过添加新视图菜单将aspx页面添加为应用程序的视图.

我需要一个集成到MVC应用程序的aspx页面,这就是我尝试使用这个aspx页面的原因.

我不确定我做错了什么.请帮忙.

Dis*_*ile 7

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

您使用HTML Helper方法:

<%= Html.TextBox("TextBox1") %>
Run Code Online (Sandbox Code Playgroud)

MVC不支持服务器端控件,因为MVC没有ViewState的概念.

编辑:

如果需要集成MVC和WebForms,则需要创建独立的Web表单页面.这些不是MVC应用程序中的"视图".然后,您可以通过在Global.asax中执行以下操作来创建到这些Web表单页面的路由:

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

现在,当您转到/ products/drinks时,它实际上将转到位于WebForms文件夹中的Products.aspx页面.

您创建此Products.aspx文件与普通的webforms页面相同.这样做的缺点(如果没有任何改变)是你不能共享主页/布局页面,所以你必须复制任何布局并创建.master以使页面看起来相似.