asp.net mvc - cómo agregar una página de código subyacente a una vista o vista parcial
asp.net-mvc views (4)
Noté que con la última versión de ASP.NET MVC que una Vista ya no tiene clases de código subyacente.
¿Cómo hago para agregar una clase de código subyacente ahora a una vista parcial o parcial?
No estoy seguro de por qué está creando un código detrás del archivo, pero si realmente lo hace, entonces consideraría utilizar el enfoque estándar de formularios web.
También me gustaría examinar los conceptos básicos de MVC para entender por qué no se necesitan las páginas posteriores.
Ok, he verificado la solución, aquí hay algo que debes tener en cuenta:
CodeBehind = "View.ascx.cs" Inherits = "Project.Views.Shared.View"
En su caso, necesita cambiar "Project.Views.Shared.View" en función de su espacio de nombres y nombre de clase, y para acceder al control en el código subyacente, debe agregar manualmente la declaración en el código subyacente. En mi caso, necesito inicializar el control 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;
}
Para agregar un archivo codebehind a su página aspx, mientras sigue permitiendo que sea el objetivo de una vista MVC, haga lo siguiente.
Para una página de vista llamada Index.aspx
...
Reemplace el siguiente código ....
<%@ Page Inherits="System.Web.Mvc.ViewPage" %>
con
<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %>
Luego cree un archivo llamado Index.aspx.cs
(o .vb
).
partial class Home_Index : System.Web.Mvc.ViewPage
{...}
o VB
Partial Class Home_Index
Inherits System.Web.Mvc.ViewPage
...
End Class
Eso es. Lo único especial es usar la clase base Mvc.ViewPage
correcta.
Cómo agregar una página de código subyacente a una vista parcial
Parece que esto no fue particularmente complicado, y es bastante factible. Esta respuesta funcionó para un ViewUserControl
parcial, pero lo mismo debería aplicarse a un ViewPage
normal de MVC también.
Agregue un nuevo archivo de clase con la convención de
<view filename & extention>.cs
(es decir,view.ascx.cs
)Añadir
using System.Web.Mvc;
a la claseCambie la clase para Heredar de
ViewUserControl<>
.
es decir,public class Foo:ViewUserControl
Agregue lo siguiente al encabezado de la Vista:
CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"
Copie los archivos de la solución y vuelva a arrastrarlos para volver a asociarlos. Esto puede no ser necesario en VS 2010+ y MVC 2+.
Para que esto funcione con una vista MVC normal, solo necesita heredar la clase de "ViewPage"