代码之家  ›  专栏  ›  技术社区  ›  griegs

ASP.NET-MVC和WebForms共存

  •  1
  • griegs  · 技术社区  · 15 年前

    我知道我以前问过这个问题,我知道有很多资源可以用来描述这项技术,但我一辈子都做不到。

    我首先创建了一个简单的webforms应用程序。

    然后我添加了视图和控制器文件夹。 然后我在视图中添加了home和shared文件夹,并添加了index.aspx和site.master文件。

    我创建了homecontroller.cs文件。

    然后我对web.config进行了更改,并将web.config添加到视图文件夹中。

    然后我对global.asax页面进行了更改。

    整个事情都在编译,路由看起来已经注册了,但是我无法打开主页/索引页面。

    我总是得到“HTTP错误404-找不到”

    有人真的做到了吗?哦,我们这里用的是iis6。

    下面的代码

    全球的

    public static void RegisterRoutes(System.Web.Routing.RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
    
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.mvc/{action}/{id}",                           // URL with parameters
            new { action = "Index", id = "" }  // Parameter defaults
        );
    
        routes.MapRoute(
            "Root",
            "",
            new { controller = "Home", action = "Index", id = "" }
          );
    
    }
    

    Web.CONFIG

    <compilation debug="true">
                <assemblies>
                    <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    
    
            <pages>
                <controls>
                    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                </controls>
                <namespaces>
                    <add namespace="System.Web.Mvc"/>
                    <add namespace="System.Web.Mvc.Html"/>
                    <add namespace="System.Web.Routing"/>
                    <add namespace="System.Web.Mvc.Ajax"/>
                    <add namespace="System.Linq"/>
                    <add namespace="System.Collections.Generic"/>
                </namespaces>
            </pages>
    
    
            <httpModules>
                <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </httpModules>
    

    家庭控制器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    [HandleError]
    public class HomeController : Controller
    {
    
        public ActionResult Index()
        {
            return View();
        }
    
        public ActionResult About()
        {
            return View();
        }
    }
    

    家景

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MVCSite.master" Inherits="System.Web.Mvc.ViewPage"%>
    
    <script runat="server">
    
    </script>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    
        MVC Home Page
    
        <%= Html.TextBox("txtTest") %>
        <%= Html.ActionLink("About Page", "About") %>
    
    </asp:Content>
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Nathan Fisher    15 年前

    我会用另一种方法创建一个MVC应用程序,然后添加您需要的Web表单。更简单的是,默认的MVC应用程序已经为您设置了所有必需的位。

    您需要创建一个单独的文件夹,您的webforms将生活在其中。然后,您可以根据需要从路由引擎中包括/排除文件夹。

        2
  •  1
  •   griegs    15 年前

    结果表明,该网站需要是一个Web应用程序。

    我还需要将以下内容添加到web.config中;

    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    
                <remove name="UrlRoutingModule"/>
                <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing"/>
    

    感谢所有试图提供帮助的人。

        3
  •  0
  •   John Farrell    15 年前