PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Studio 2005 Team Suite - asp.net + framesets?


Matrix316
2007-04-26, 10:05:19
Ich habe hier das oben genannte VS installiert und möchte gerne auf einer aspx Seite ein Frameset einrichten, jedoch sagt er mir, dass er kein <frameset> kennt! In Visual Studio 2003 kennt er es noch. Gibts da irgendwie Alternativen für Frames in Webanwendungen???

Gast
2007-04-26, 10:33:16
Ich habe hier das oben genannte VS installiert und möchte gerne auf einer aspx Seite ein Frameset einrichten, jedoch sagt er mir, dass er kein <frameset> kennt! In Visual Studio 2003 kennt er es noch. Gibts da irgendwie Alternativen für Frames in Webanwendungen???

Also Frames kannst du natürlich in ASP.NET verwenden. Es werden aber keine Frames vom ASP.NET Objektmodell her unterstützt. Poste am besten mal deinen Code. Ich könnte mir vorstellen, dass es zu einen Fehler kommt, wenn du innerhalb eines Server Controls dann dein frameset definierst. Hier mal ein Bsp. wie ich es bei Frames gelöst habe:


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
//mache etwas
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
</head>
<frameset cols="*,960,*" frameborder="no" framespacing="0" border="0">
<frame name="links" src="leer.htm" noresize frameborder="no" scrolling="no" border="0">
<frame name="inhalt" src="main.aspx" noresize frameborder="no" border="0">
<frame name="rechts" src="leer.htm" noresize frameborder="no" scrolling="no" border="0">
</frameset>
<body>
</body>
</html>


Wobei ich Frames eigentlich unschön finde, aber darüber lässt sich wohl herrlich streiten. Als Alternative bietet sich aber gerade und ausdrücklich das ASP.NET Objektmodell an, denn da kannst du ja defakto irgendwelche Controls in die Controls-Collection anderer Controls einladen und somit eine Hierarchie aufbauen. Schau dir mal MasterPages von ASP.NET 2.0 an, das ist ein prima Ersatz für Frames.

Matrix316
2007-04-26, 11:18:47
Oha, ich Depp hab versucht im body ein frameset zu machen. ;)

EDIT: Wobei auch wenn ich ein Frameset außerhalb mache, kann ich das nicht in der Entwurfsansicht betrachten, was natürlich auch blöd ist...

Matrix316
2007-04-26, 12:13:25
Ok, es geht jetzt. (auch ohne Designeransicht ;))

Aber ein anderes Problem:

Wie bekomm ich denn einen Doppelpunkt in einen String rein?

Ich versuche eine Adresse für einen Webserver zusammenzusetzen und da brauch ich nach dem Localhost und vor dem Port einen Doppelpunkt, aber egal wie ich den reinsetze, ob mit + ":" + oder + ':' + oder + '\:' + nix geht...


System.Web.UI.Page page; //wird als Funktionsparameter übergeben

String Localhost = "http://" + page.Request.Url.Host + ':';
return Localhost + page.Request.Url.Port + page.Request.ApplicationPath;

am Ende kommt sowas raus:

http://localhost1234/...

aber ich hätte gerne

http://localhost:1234/...

Gast
2007-04-26, 12:33:40
System.Web.UI.Page page; //wird als Funktionsparameter übergeben

String Localhost = "http://" + page.Request.Url.Host + ':';
return Localhost + page.Request.Url.Port + page.Request.ApplicationPath;

am Ende kommt sowas raus:

http://localhost1234/...

aber ich hätte gerne

http://localhost:1234/...

Verwendest du CLI C++? Du fügst ja mit ':' ein Char hinzu, das geht wahrscheinlich ohne explizites casten nicht. Mach einfach ein String drauß, also ":", dann geht's.

Matrix316
2007-04-26, 13:13:25
Eigentlich nutze ich C# aber anscheinend läuft er die Funktion garnicht durch, da ein Haltepunkt glatt ignoriert wurde...

Gast
2007-04-26, 13:17:09
Eigentlich nutze ich C# aber anscheinend läuft er die Funktion garnicht durch, da ein Haltepunkt glatt ignoriert wurde...

In dem Fall kannst du natürlich das so belassen. Warum verwendest du nicht den Debugger? Dann siehst du ja bis wohin abgearbeiet wird und warum deine Methode nicht aufgerufen wird.

Matrix316
2007-04-26, 13:21:30
Tjo, den nutz ich ja, aber in der Funktion


protected void Page_Load(object sender, EventArgs e)


Wo die obere Funktion aufgerufen wird (ist eine default.aspx seite), funktioniert kein Haltepunkt weil "für dieses Dokument keine Symbole geladen wurden".

Ich habe ja mein default.aspx und wenn ich dort in das codebehind cs file gehe, sollte doch die Funktion Page_Load jedes Mal beim laden der Seite aufgerufen werden, oder?

Gast
2007-04-26, 13:30:49
Verwendest du ASP.NET 1.x oder ASP.NET 2.0? Bei ASP.NET 2.0 werden ja die Page Eventhandler automatisch verknüpft. Bei ASP.NET 1.x steht in der InitializeComponents Methode in der Codebehind dann noch die manuelle Event Verknüpung, also z.B.: this.Page.Load += new EventHandler(this.Page_Load)
Aber wenn der Eventhandler nicht attacht wäre, dürfte die Page_Load Methode überhaupt nicht ausgeführt werden, musst du mal gucken.
Was die Symbole betrifft, so gibt es wohl zu deinem Code keine Debug-Informationen. Das sollte aber IMO nur passieren, wenn du die Website im Release Mode ohne Debug Informationen vorkompiliert hast. Bei ASP.NET 2.0 gibt es ja z.B. mehrere Kompilierungsmöglichkeiten.

Matrix316
2007-04-26, 14:08:47
2.0

Und da finde ich kein "initializecomponents".

Auch ist das Projekt ist im Debug Modus kompiliert.

Gast
2007-04-26, 14:28:29
2.0

Und da finde ich kein "initializecomponents".



Das brauchst du bei 2.0 auch nicht, das war ja nur bei 1.x so. Ich war mir nur nicht sicher, ob du noch ein 1.x Projekt hast oder ein frisches 2.0 Projekt.


Auch ist das Projekt ist im Debug Modus kompiliert.

Dann sollte ja eine *.pdb Datei im bin Verzeichnis liegen?! Ich kann hier jetzt aber nichts genaues sagen, weil ich meine 2.0 Anwendungen bisher immer komplett von der ASP.NET 2.0 Runtime kompilieren lasse. Aber ohne genauen Code kann ich da jetzt auch nix weiter zu sagen :(

Matrix316
2007-04-26, 17:51:51
So, nach dem ich den Browsercache und alles andere mal gelöscht habe :rolleyes:, scheint es jetzt doch zu gehen...:whistle: :weg:

Matrix316
2007-04-27, 11:15:22
Und wieder ein Problem mit dem neuen Visual Studio 2005. Im Gegensatz zu 2003 gibts keine Option für Flow Layout oder ein Grid Panel mehr, so dass man das Layout mit absolut, relativ, static und nicht gesetzt setzen muss.

Problem (wieder Webanwendung):

Ich habe einige Panels untereinander, die ich je nach dem auf visible und nicht visible setzen möchte. Das klappt auch im prinzip, jedoch im Webbrowser sind diese Panels (sprich divs) nicht mehr direkt untereinander (wie im Designer), sondern überlappen sich und damit die jeweiligen Textboxen in den Panels. An was könnte das liegen?

Oder gibts Alternativen dazu, wenn ich Textboxen gruppieren und dann zwischen verschiedenen Gruppen switchen, diese aber immer möglichst direkt untereinander ohne größeren Abstand sichtbar haben möchte?

EDIT hat sich erledigt. Lag an der noch fixen Höhe der Panels.:rolleyes:

Matrix316
2007-04-30, 15:19:02
Noch ne Frage: Nehmen wir mal an ich habe einen GridView und in einer Spalte einen Button der ein "Command" Dingens Befehl hat "IrgendwasEvent". Wie kann ich denn den Button Event abgreifen? Bei VS2003 gibts ja die EventHandler (im InitializeComponent), aber wo finde ich die bei VS2005?

Elemental
2007-04-30, 16:15:38
Also ich weiss ja nicht, wie das bei ASP.NET ist, aber bei "normalem" C# gibts schon noch ein InitilaizeComponent(), jedoch ist das jetzt in eine extra Datei namens Klassenname.Designer.cs ausgelagert (dank partieller Klassen...).

Zu den events:
Entweder selber im Code auf den event "subscriben" oder im Designer auf dein Control klicken -> rechts-klick ->properties. Im properties-Fenster ist ganz oben so ein Blitz auf nem Button. Wenn du da drauf klickst, dann kriegst du ne Liste aller Events und kannst dich bequem subscriben.


Wie gesagt, kein bei ASP.NET natürlich anders sein... I don't know...

Matrix316
2007-04-30, 16:39:25
:whistle: Von dem gelben Blitz habe ich schon vorher was gelesen, aber ich dachte, der würde bei einem Property stehen und nicht oben in der Iconleiste...:rolleyes:

Geht jetzt! :up:

Gast
2007-05-01, 21:32:34
Noch ne Frage: Nehmen wir mal an ich habe einen GridView und in einer Spalte einen Button der ein "Command" Dingens Befehl hat "IrgendwasEvent". Wie kann ich denn den Button Event abgreifen? Bei VS2003 gibts ja die EventHandler (im InitializeComponent), aber wo finde ich die bei VS2005?

Ganz einfach. Du setzt gibst den Button ein CommandName und attachst zum GridView einen EventHandler für OnCommand. Im EventHandler fragst du dann eben nach auf das CommandName ab.

Gast
2007-05-01, 21:34:15
:whistle: Von dem gelben Blitz habe ich schon vorher was gelesen, aber ich dachte, der würde bei einem Property stehen und nicht oben in der Iconleiste...:rolleyes:

Geht jetzt! :up:

Wenn du im Designer in der Markup Ansicht oben im GridView Tag eine Taste drückt, geht auch das Fenster für Code Complete auf und da siehst du dann auch alle Eigenschaften/Events usw.