come aggiungere una pagina di codice sottostante per una vista o vista parziale
-
22-08-2019 - |
Domanda
Ho notato con l'ultima versione di ASP.NET MVC che una visualizzazione di default non è più necessario avere code-behind classi.
Come posso fare per aggiungere una classe code-behind ora ad una visualizzazione o Vista parziale ??
Soluzione
Come aggiungere una pagina code-behind a una vista parziale
Sembra che questa non era particolarmente difficile, ed è abbastanza fattibile. Questa risposta ha lavorato per un ViewUserControl
parziale, ma lo stesso dovrebbe valere per un ViewPage
normale MVC e
-
Aggiungere un nuovo file di classe con la convenzione di
<view filename & extention>.cs
(cioèview.ascx.cs
) -
Aggiungi
using System.Web.Mvc;
alla classe -
Modificare la classe di Eredita da
ViewUserControl<>
.
cioèpublic class Foo:ViewUserControl
-
Aggiungere il seguente alla intestazione della vista:
CodeBehind="View.ascx.cs" Inherits="Project.Views.Shared.View"
-
Copiare i file dalla soluzione e trascinare nuovamente a ri-associare le due cose insieme. Questo potrebbe non essere necessario in VS 2010+ e MVC 2 +.
Per far funzionare tutto questo con un normale MVC View, è solo bisogno di ereditare la classe da "ViewPage"
Altri suggerimenti
Non sono sicuro che il motivo per cui si sta creando un codice al file, ma se davvero fai, allora vorrei prendere in considerazione utilizzando i moduli web standard, si avvicinano al posto.
Vorrei anche prendere in considerazione i principi fondamentali di MVC per capire il motivo per cui non sono necessari sederi pagina.
Ok, ho verificato la soluzione, qui è qualcosa che si deve notare:
Codebehind = Eredita "View.ascx.cs" = "Project.Views.Shared.View"
Nel tuo caso, è necessario modificare "Project.Views.Shared.View", sulla base di spazio dei nomi e nome di classe, e al fine di accedere al controllo nel code-behind, è necessario aggiungere manualmente la dichiarazione in code-behind . Nel mio caso, ho bisogno di inizializzare il controllo 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;
}
Per aggiungere un file codebehind alla pagina aspx, mentre ancora permettendo così di essere il bersaglio di una vista MVC, procedere come segue.
Per una pagina vista denominata Index.aspx
...
Sostituire il seguente codice ....
<%@ Page Inherits="System.Web.Mvc.ViewPage" %>
con
<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %>
Quindi creare un file chiamato 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
Questo è tutto. L'unica cosa speciale è utilizzare la classe di base Mvc.ViewPage
corretta.