как добавить страницу с выделенным кодом в представление или частичное представление - PullRequest
16 голосов
/ 25 марта 2009

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

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

Ответы [ 4 ]

23 голосов
/ 25 марта 2009

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

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

  1. Добавить новый файл классов с условным обозначением <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»

4 голосов
/ 25 марта 2009

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

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

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

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

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

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

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;
    }
1 голос
/ 28 октября 2016

Чтобы добавить файл 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 базового класса.

...