Внедрение страниц WebForms в MVC-приложения

Чтобы использовать страницу WebForms в MVC-приложении, нет необходимости писать большое количество кода. Поскольку MVC-приложение по сути является ASP.NET-приложением, и при его создании нет препятствий к использованию WebForms, все, что нужно сделать — объяснить системе маршрутизации MVC Framework, что для страниц WebForms эту самую систему маршрутизации использовать не надо. Для этого достаточно добавить в файле Global.asax в метод RegisterRoutes правило для игнорирования путей к страницам ASPX:

routes.IgnoreRoute("{resource}.aspx/{"pathInfo}");

После этого в MVC-приложение можно добавить стандартную ASPX-страницу, например WebForm1.aspx, код которой приведен в листинге 2.8, и для этой страницы будет обеспечена полноценная функциональность WebForms, что подтверждает рис. 2.4.

Листинг 2.8. Страница WebForml.aspx

<%@ Page Language="C#" AutoEventWireup="true"

      CodeBehind="WebForm1.aspx.cs"

      Inherits="MvcWebFormsCompositeApp.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

  <title></title>

</head>

<body>

  <form runat="server">

    <asp:SqlDataSource ID="SqlDataSource1" runat="server"

      ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

      SelectCommand="SELECT * FROM [Persons]">

    </asp:SqlDataSource>

    <br/>

    <asp:GridView ID="GridView1" runat="server"

         AutoGenerateColumns="False" DataKeyNames="PersonId"

         DataSourceID="SqlDataSource1">

      <Columns>

        <asp:BoundField DataField="PersonId"

             HeaderText="PersonId"

             InsertVisible="False" ReadOnly="True"

             SortExpression="PersonId" />

        <asp:BoundField DataField="LastName"

             HeaderText="LastName" SortExpression="LastName" />

        <asp:BoundField DataField="FirstName"

             HeaderText="FirstName" SortExpression="FirstName" />

      </Columns>

    </asp:GridView>

  </form>

</body>

</html>

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК