Как: PageView и наследование контроллеров в ASP.NET MVC - PullRequest
4 голосов
/ 22 мая 2009

Если я хочу добавить общую функциональность ко всем страницам, я создаю BasePage и извлекаю из него все страницы ASPX, как это можно сделать для просмотров страниц и контроллеров в MVC?

Ответы [ 3 ]

2 голосов
/ 22 мая 2009

Для представлений («просмотров страниц», как вы их называете) у вас, вероятно, не будет слишком много данных / поведения для группировки в базовом классе, но вы все равно можете. Вы бы определили класс, который наследуется от System.Web.UI.Page и разместили там всю общую логику. Затем в вашем коде позади файлов для представлений (в ASP.NET MVC 1.0 нет кода позади файла BY DEFAULT для представления, но вы можете создать его ) наследует класс представления от этого общего класса.

Для контроллера вы можете создать класс, который наследуется от System.Web.Mvc.Controller, и поместить в него все обычные вещи. Затем выведите все ваши классы контроллеров из этого класса. Нет ограничений по именам, пространствам имен и расположению файлов.

2 голосов
/ 22 мая 2009

Хорошо для контроллера, вы просто наследуете от System.Web.Mvc.Controller и добавляете пользовательские функции:

public class MyController : System.Web.Mvc.Controller
{
  public MyController() : base()
  {
    ViewData["someDataInMasterPage"] = "Hello World!";
  }
}

Если бы у вас была мастер-страница, которая пыталась бы получить некоторые ViewData с указанным выше ключом, она сделала бы ее доступной во всех ваших представлениях, если их контроллер наследовал бы от MyController.

Вы также можете наследовать от ViewPage для определения пользовательских функций. См., Например, этот вопрос SO: Расширение WebFormView в MVC

1 голос
/ 22 мая 2009

, если вы хотите, чтобы все представления совместно использовали один и тот же сценарий, используйте главную страницу со всеми функциями сценария и поместите в нее заполнитель:

<asp:ContentPlaceHolder ID="MainContent" runat="server" />

И затем каждый подвид ссылается на главную страницу.

<%@ Page Title="" Language="C#" MasterPageFile="Site.Master" 
Inherits="OpenProjects.Web.Mvc.ApplicationView %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

</asp:Content>

Для контроллеров создайте свой собственный контроллер приложения, который наследует от встроенного контроллера MVC, а затем заставьте свои контроллеры наследовать от него вместо просто Controller

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