Как добавить страницу с выделенным кодом в представление или частичное представление
В последней версии ASP.NET MVC я заметил, что в представлении больше не используются классы с выделенным кодом.
Как мне теперь добавить класс с выделенным кодом в представление или частичное представление?
4 ответа
Как добавить страницу с выделенным кодом в частичное представление
Кажется, это не было особенно сложно, и вполне выполнимо. Этот ответ сработал для Частичного ViewUserControl
но то же самое должно применяться к нормальному MVC ViewPage
также
Добавьте новый файл Class с условным обозначением
<view filename & extention>.cs
(т.е.view.ascx.cs
)добавлять
using System.Web.Mvc;
к классуИзмените класс на Наследовать от
ViewUserControl<>
,
т.е.public class Foo:ViewUserControl
Добавьте следующее в заголовок View:
CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"
Скопируйте файлы из решения и перетащите обратно, чтобы заново связать их вместе. Это не может быть необходимо в VS 2010+ и MVC 2+.
Чтобы это работало с обычным MVC View, вам просто нужно унаследовать класс от "ViewPage"
Я не уверен, почему вы создаете код за файлом, но если вы действительно это делаете, то я хотел бы вместо этого использовать стандартный подход веб-форм.
Я также хотел бы изучить основы MVC, чтобы понять, почему не нужны страницы.
Хорошо, я проверил решение, вот что вам нужно отметить:
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
Базовый класс.