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 ??

È stato utile?

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

  1. Aggiungere un nuovo file di classe con la convenzione di <view filename & extention>.cs (cioè view.ascx.cs)

  2. Aggiungi using System.Web.Mvc; alla classe

  3. Modificare la classe di Eredita da ViewUserControl<>.
    cioè public class Foo:ViewUserControl

  4. Aggiungere il seguente alla intestazione della vista:

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

  5. 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.

altro spiegazione

Come usare ASP: Grafico senza code-behind (opzione B)

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top