2009-03-25 8 views

Antwort

22

Wie eine Codebehind-Seite zu einer Teilansicht

scheint dies war nicht besonders kompliziert, und ist durchaus tun können hinzuzufügen. Diese Antwort arbeitete für einen Teil ViewUserControl aber das gleiche für einen normale MVC ViewPage auch

  1. mit der Konvention von <view filename & extention>.cs (dh view.ascx.cs) eine neue Klassendatei hinzufügen gelten sollte

  2. hinzufügen using System.Web.Mvc; zur Klasse

  3. Ändern Sie die Klasse in Inherit von ViewUserControl<>.
    heißt public class Foo:ViewUserControl

  4. Fügen Sie die folgenden Header der Ansicht:

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

  5. Kopieren Sie die Dateien aus der Lösung aus und ziehen zurück in zusammen, um die beiden erneut verknüpft. Dies ist möglicherweise in VS 2010+ und MVC 2+ nicht erforderlich.

Für diese mit einer normalen MVC-Ansicht zu arbeiten, müssen Sie nur die Klasse von „View“

+4

Danke dafür. Ich habe einen schnelleren Weg gefunden, die beiden Dateien miteinander zu verbinden, indem Sie mit der rechten Maustaste darauf klicken, Aus Projekt ausschließen, dann mit 'Alle Dateien anzeigen' ausgewählt, mit der rechten Maustaste erneut klicken und sie erneut einschließen. – Andrew

+3

VS2010 verbindet sie, sobald Sie die Klasse blah.ascx.cs (im selben Verzeichnis wie die aspx-Seite) erstellen. Genial. – ashes999

4

Ich bin nicht sicher erben, warum Sie ein Code-behind-Datei erstellen, aber wenn Sie wirklich wirklich, dann würde ich stattdessen den Webforms-Standardansatz verwenden.

Ich würde auch in die Grundlagen von MVC untersuchen, um zu verstehen, warum Seitenhinterseiten nicht benötigt werden.

Another explanation

How to use ASP:Chart without a code-behind (Option B)

+1

Es ist wirklich ziemlich einfach. Ich muss Code verwenden, um die Chart-Serie zu füllen, die ich verwende. Es würde mir keinen normalen MVC-Ansatz erlauben. Dies ist ein echter Kompromiss, und es funktioniert. –

+0

In diesem Fall, hier ist, wie Sie Chart ohne Code-Behind verwenden können: http://code-inside.de/blog-in/2008/11/27/howto-use-the-new-aspnet- chart-controls-with-aspnet-mvc/ –

+0

Also erzählst du mir, du würdest es bevorzugen, sehr unordentlich zu haben, um Spaghetti-Code in deinem HTML zu handhaben? Ich denke, das ist eine sehr gute Verwendung des Codes hinter sich. Es ist keine Steuerungslogik, es ist kein Präsentationscode. es ist Präsentationsvorbereitung. –

2

Ok, habe ich die Lösung überprüft, hier ist etwas, das Sie beachten müssen:

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

In Ihrem Fall müssen Sie" Project.Views.Shared.View "basierend auf Ihrem Namespace und Klassennamen ändern, und um auf das Steuerelement im Code-Behind zuzugreifen, müssen Sie manuell Deklaration in Co hinzufügen De-zurück. In meinem Fall muss ich die gigaSoft proEssential Kontrolle initialisieren:

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

Um eine Code-Behind-Datei auf Ihrer aspx Seite hinzufügen, und ermöglicht gleichzeitig es das Ziel einer MVC-Ansicht zu sein, gehen Sie wie folgt.

Für eine Ansicht Seite mit dem Namen Index.aspx ...

Ersetzen Sie den folgenden Code ....

<%@ Page Inherits="System.Web.Mvc.ViewPage" %> 

mit

<%@ Page CodeFile="Index.aspx.vb" Inherits="Home_Index" %> 

Erstellen Sie dann eine Datei namens Index.aspx.cs (oder .vb).

partial class Home_Index : System.Web.Mvc.ViewPage 
{...} 

oder VB

Partial Class Home_Index 
    Inherits System.Web.Mvc.ViewPage 
    ... 
End Class 

Das ist es. Das Besondere ist die Verwendung der richtigenBasisklasse.