asp.net-mvc и веб-формы сосуществуют - PullRequest
1 голос
/ 15 декабря 2009

Я знаю, что задавал этот вопрос раньше, и я знаю, что существует множество ресурсов, описывающих технику, но я не могу на всю жизнь разобраться с ней.

Я начал с создания простого приложения WebForms.

Затем я добавил папки Views и Controllers. Затем я добавил домашние и общие папки в представления и добавил Index.aspx и файл site.master.

Я создал файл HomeController.cs.

Затем я внес изменения в web.config и добавил web.config в папку views.

Затем я внес изменения в страницу global.asax.

Все это компилируется, кажется, что маршруты регистрируются, но я просто не могу открыть страницу Home / Index.

Я всегда получаю сообщение «Ошибка HTTP 404 - Не найдено»

Кому-нибудь действительно удалось это сделать? О, и мы используем IIS6 здесь.

КОД НИЖЕ

Global

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 ]

1 голос
/ 15 декабря 2009

Я бы пошел другим путем и создал бы приложение MVC, а затем добавил бы нужные вам веб-формы. Гораздо проще, поскольку в приложении MVC по умолчанию все необходимые биты уже установлены.

Вам необходимо создать отдельную папку, в которой будут жить ваши веб-формы. Затем вы можете включить / исключить папку из механизма маршрутизации по мере необходимости.

1 голос
/ 18 декабря 2009

Оказывается, веб-сайт должен быть веб-приложением.

Мне также нужно было добавить следующее в 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"/>

Спасибо и +1 всем, кто пытался помочь.

0 голосов
/ 15 декабря 2009

Вы установили сопоставления с подстановочными знаками?

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...