Как добавить страницу с выделенным кодом в представление или частичное представление

В последней версии ASP.NET MVC я заметил, что в представлении больше не используются классы с выделенным кодом.

Как мне теперь добавить класс с выделенным кодом в представление или частичное представление?

4 ответа

Решение

Как добавить страницу с выделенным кодом в частичное представление

Кажется, это не было особенно сложно, и вполне выполнимо. Этот ответ сработал для Частичного ViewUserControl но то же самое должно применяться к нормальному MVC ViewPage также

  1. Добавьте новый файл Class с условным обозначением <view filename & extention>.cs (т.е. view.ascx.cs)

  2. добавлять using System.Web.Mvc; к классу

  3. Измените класс на Наследовать от ViewUserControl<>,
    т.е. public class Foo:ViewUserControl

  4. Добавьте следующее в заголовок View:

    CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"

  5. Скопируйте файлы из решения и перетащите обратно, чтобы заново связать их вместе. Это не может быть необходимо в VS 2010+ и MVC 2+.

Чтобы это работало с обычным MVC View, вам просто нужно унаследовать класс от "ViewPage"

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

Я также хотел бы изучить основы MVC, чтобы понять, почему не нужны страницы.

Другое объяснение

Как использовать ASP:Chart без кода (Вариант B)

Хорошо, я проверил решение, вот что вам нужно отметить:

CodeBehind = "View.ascx.cs" Inherits = "Project.Views.Shared.View"

В вашем случае вам нужно изменить "Project.Views.Shared.View" на основе вашего пространства имен и имени класса, а чтобы получить доступ к элементу управления в коде, вы должны вручную добавить объявление в коде. В моем случае мне нужно инициализировать элемент управления gigaSoft proEssential:

public class gigaTest2 : ViewUserControl
{
    protected global::Gigasoft.ProEssentials.PegoWeb PegoWeb1;
    protected void Page_Load(object sender, EventArgs e)
    {
        // Set Titles 
        PegoWeb1.PeString.MainTitle = "Hello ASP.NET";
        PegoWeb1.PeString.SubTitle = "";

        // One simple way of passing data, data binding also possible. //' 
        PegoWeb1.PeData.Subsets = 1;
        PegoWeb1.PeData.Points = 6;
        PegoWeb1.PeData.Y[0, 0] = 10;
        PegoWeb1.PeData.Y[0, 1] = 30;
        PegoWeb1.PeData.Y[0, 2] = 20;
        PegoWeb1.PeData.Y[0, 3] = 40;
        PegoWeb1.PeData.Y[0, 4] = 30;
        PegoWeb1.PeData.Y[0, 5] = 50;

        // Set style of chart and a few other properties //' 
        PegoWeb1.PePlot.Method = Gigasoft.ProEssentials.Enums.GraphPlottingMethod.Bar;
        PegoWeb1.PePlot.Option.GradientBars = 8;
        PegoWeb1.PeFont.FontSize = Gigasoft.ProEssentials.Enums.FontSize.Large;
    }

Чтобы добавить файл codebehind на страницу aspx, при этом оставляя его целью просмотра MVC, сделайте следующее.

Для просмотра страницы с именем Index.aspx...

Замените следующий код....

<%@ Page Inherits="System.Web.Mvc.ViewPage" %>

с

<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %>

Затем создайте файл с именем Index.aspx.cs (или же .vb).

partial class Home_Index : System.Web.Mvc.ViewPage
{...}

или VB

Partial Class Home_Index
    Inherits System.Web.Mvc.ViewPage
    ...
End Class

Вот и все. Единственное, что особенное, это использование правильных Mvc.ViewPage Базовый класс.

Другие вопросы по тегам