Salute schuppsl
Integriert ist performanter und skaliert vorallem besser.
Für den Entwickler selber ändert sich vorallem die Angabe in der web.config, dort hast du eine neue Sektion "system.webserver".
Wenn die Anwendung in beiden Modis laufen soll, musst du die HttpModule / HttpHandler an beiden Stellen angeben.
Im Detail:
Gruss Peter
Hallo 7.e.Q.
Es geht ja nicht darum, das du hingehen "musst" oder sollst, sondern es mich erschreckt das sowas überhaupt stört.
Der Vergleich mit den Büchern ist nicht ganz brauchbar. Das kann man gut abkapseln und es wären viel zu viel Einträge, die das Forum zuspammen würden.
Gruss Peter
Hoi Hendrik
Ich vermute mal, dass ich nicht der einzige bin, der als primärer Hobby-Entwickler Szene-News zu solchen Events gar nicht liest.
Das schockiert mich jetzt schon ein wenig.
Auch wenn es nur ein Hobby ist, muss es dich doch interessieren, wie du besser werden kannst, oder nicht?
Ich bin gegen eine solche Aufsplittung, weil es ja zur Szene gehört und so eben Leute darauf aufmerksam werden.
Gruss Peter
Hoi
Ohne Dekleration und Code ist es schwieriger zu erraten, aber das Problem ist eigentlich bekannt:
Gruss Peter
Salute Echo
Mache aus dem normalen Link eines mit target="_blank", so kommt entweder der Download oder ein leeres Fenster das du ggf. schliessen könntest.
Serverseitig kommst du über die Servervariablen mit dem Key "HTTP_REFER" an die vorherige Seite.
Gruss Peter
Salute Stefan
Da wäre nämlich schon die Frage ob man per XML-Konfigurationsdatei Cunstructor Injection machen kann.
Automatisch unterstützt LightCore "nur" Constructor Injection, ausser bei der WebForms-Integration.
Das ganze passiert implizit, du musst nur alle Abhängigkeiten einzeln registrieren, d.h. per Xml oder Code angeben. Anschliessend ein Konstruktorargument angeben und eine Instanz deiner Klasse mit dem Konstrukorargument auflösen.
Pseudomässig:
Xml:
<Registration ILooger, Logger.....
<Registration IRepository, Repository...
Repository Klasse:
public class Repository : IRepository
{
private ILogger _logger;
public Repository(ILogger logger)
{
this._logger = logger;
}
}
Aufruf:
// Xml Konfiguration einlesen...
IRepository repository = container.Resolve<IRepository>(); // ILogger wird implizit / automatisch injiziert.
Gruss Peter
Salute Burnswigg
Ausser einem normalen Link, das der Benutzer anklickt, oder Javascript das ausgeführt wird, gibt es keine Möglichkeit.
Gruss Peter
Salute haargel
Schwierig zu sagen, wenn man keine Implementation sieht.
Schau dir mal das asp:Panel im Reflector an. Damit sowas funktioniert, musst du das Control mit Attributen versehen.
Gruss Peter
Hoi Maddinel
Das geht nicht, zumindest nicht einfach und sauber.
Ich nehme an du möchtest das deine Inhalte aus dem Tabellengitter ausbrechen. Das kannst du zwar schon machen, jedoch nur über Zellen hinweg, nicht über eine "halbe" Zelle.
Wenn du das möchtest, müsstest du mit einem Layer arbeiten, der über der Tabelle liegt.
Das ist aber so eine wackelige Geschichte, das ich mir eine Alternative überlegen würde.
Gruss Peter
Salute zusammen
@michlG
ReSharper kriegst du in der Beta-Phase unbegrenzt, einfach ein neuer Build vom EAP runterladen 😃.
Wie gesagt, ReSharper läuft super (Ohne könnte - nein - will ich nicht 😉, aber nur wenn man mindestens 4GB RAM hat und wie geschrieben, die Solution Analyse ausschaltet. (Context Actions gehen trotzdem).
Im Geschäft arbeiten wir mit .NET 4.0 produktiv, an dem wirds also nicht liegen.
Momentan läufts stabil, mehr als ein Absturz am Tag gibts nicht, und der lässt sich verkraften 😃.
Kann ich nicht bestätigen. Auch .NET 4 und Silverlight 4 stören bei mir nicht. Dass es langsamer als das 08er sein soll, kann ich eigentlich auch nicht nachvollziehen.
Dito. Langsamer sicher, aber nicht so das man nicht damit arbeiten könnte.
Gruss Peter
Salute zusammen
Wir verwenden im Geschäft komplett VS2010 Beta 2 produktiv. Mit ein paar Einstellungen, bspw. die Analyse der ganzen Solution im ReSharper ausschalten, läufts ganz gut und angenehm.
Wenn man bedenkt das VS sowie auch ReSharper noch ziemliche Betas sind, kann man mit den richtigen Einstellungen ganz gut produktiv damit arbeiten.
Gruss Peter
Salute Neals
Du musst zwischen den konkreten Vorgehensweisen "Service Locator" und "Dependency Injection" unterscheiden.
Lies dir mal folgendes durch:
Es braucht schlussendlich meistens beides, die Patterns ergänzen sich also.
Gruss Peter
Salute Floste
Und wo braucht man das? 😃
Gruss Peter
Salute Sebastian
Gibts zirkuläre Referenzen? 😉
Du kannst das so aufbauen:
In der Contracts Assembly erstellst du ein Interface, das du in deiner WebApp implementierst, also machst du dir eine Basis-Masterpage.
Die Contracts referenzierst du in jedem Projekt wo es nötig ist.
Jetzt brauchst du keine Referenz mehr vom Projekt.XYZ auf deine WebApp, sondern nur noch auf Contracts.
Gruss Peter
Salute zusammen
Du kannst ein Dictionary<TKey, TValue> verwenden, als Key kannst du bzw. solltest du eine Kombination aus Name + X + Y nehmen, wobei X, Y bspw. für die Telefonnummer stehen könnte.
Ansonsten brauchts mehr Infos.
Gruss Peter
Hallo zusammen
@dN!3L
Dort wird wirklich nur eine statische Codeanalyse gemacht, damit man eben Kompile- und nicht Runtimefehler erhält.
@Timur
Wo wird denn verteilt?
Wenn du mit ≥ IIS7 arbeitest, kannst du doch neu Pakete schnüren,
so ähnlich wie die Web Application Gallery die man installieren kann.
So ist es egal wieviele Dateien du hast und ich fände es auch die bessere Lösung.
Guckst du:
Gruss Peter
Hoi schuppsl
An einem statischen Konstruktor wird das nicht liegen.
Ich habe hier mehrere Anwendungen wo das wunderbar läuft.
Läuft denn eine einfache Anwendung?
Gruss Peter
Hoi schuppsl
Sorry, falsch geschrieben, ich habs oben korrigiert:
Gruss Peter
Hallo schuppsl
Der Standardbenutzer ist "Network Service" oder "Netzwerkdienst".
Ansonsten bitte eine Fehlerbeschreibung.
Evt. hast du den IIS nach .NET installiert?
Wenn ja, müsstest du ASP.NET noch registrieren: reg_iis.exe -i
Gruss Peter
Salute lexy
Nimm doch LINQ to XML, das ist um einiges bequemer 😃
Gruss Peter
Salute deces
Wo liegt denn genau das Problem?
Die einfachste Möglichkeit wäre Serialisierung, die aufwändigere wenn du eine Datenstruktur dafür anlegst (Xml / Datenbank).
Der Typ "Model3DGroup" nützt uns nicht viel, wenn wir nicht wissen wie dieser aussieht.
Gruss Peter
Salute math55
Und wie sieht die Lösung aus?
Das hilft den anderen dann auch weiter.
Gruss Peter
Salute dewebey
Ja ich habe mich vertan.
Folgendes:
var row = (GridViewRow)checkbox.NamingContainer;
DeinDataTyp data = (DeinDataTyp)row.DataItem;
string name = data.Name;
// ...
Gruss Peter
Salute Second Sun
Stimmt, da war noch was 😃.
Benutzer bzw. Sessions zählen geht schon, mit diversen Ansätzen.
Bspw.:
Allerdings kriegst du das nicht wirklich genau mit, wenn du das Timeout nicht runterstellen kannst und kein clientseitiges Pooling nutzt.
Gruss Peter
Salute zerberos
Entweder reicht es, das Projekt zu bereinigen und neu zu builden sowie die temporären ASP.NET Dateien löschen.
Ansonsten kopierst du dir die ASPX-Seite sowie den Codebehind, erstellst eine neue Seite und fügst die relevanten Bestandteile wieder ein.
Gruss Peter
Salute dewebey
Schau dir doch die Controlhierarchie im Debugger an.
Du kannst e.Item.DataItem auf deinen Datentyp casten, den du per .DataSource an das Grid bindest.
Von dort kannst du dann einfach auf die Eigenschaften zugreifen.
Gruss Peter
Salute math55
Controls einsetzen und die Databinding Ausdrücke auf die Eigenschaften legen? 😃
Du musst ggf. einmal ' benutzen und einmal ", damit der Interpreter nicht durcheinander kommt.
Gruss Peter
Hallo Second Sun
Die Fehlerseite anpassen?
Kann auch eine ASP.NET Seite sein 😃
Gruss Peter
Salute zusammen
Anonyme Typen können nur im Kontext einer Methode - also für lokale Variablen - verwendet werden. Von daher ist das ganze gar nicht möglich.
Hinterlege die komplette Abfrage als Instanzmember und gib in deiner Methode nur das gewünschte zurück.
Gruss Peter
Salute xforfun
Kann ich solche HttpModules eigentlich auch dynamisch nachladen per Code?
Soweit ich weis nicht.
Würde ja auch keinen Sinn machen. Entweder brauchst du die Module oder nicht.
Oder was für ein Anwendungsfall fällt dir da ein?
Gruss Peter
Salute zusammen
Ja, mit Ko- und Kontravarianz funktioniert das dann.
Im Moment musst du einfach den Umweg über ein nichtgenerisches Interface gehen.
Intern kannst du trotzdem noch Generics zur Hilfe nehmen.
Gruss Peter
Salute zusammen
Arrays sowie auch Listen haben ihre Daseinsberechtigung.
In die Mottenkiste gehört dieser Datentyp nicht, so elementar wie er ist.
Es gibt Anwendungsfälle die mit einem Array besser / einfacher / schneller zu bewältigen sind (Viele Indexzugriffe, Matrixen, ...) und Anwendungsfälle wo die Liste besser ist.
Allgemein sollte man aber wissen, das Array wenn möglich nicht in eine öffentliche API gehört, sondern ein Interna bleiben soll.
Dasselbe gil auch für List<T>, allerdings weicht das jetzt schon fast wieder vom Thema ab.
Wenn es interessiert, kann hier nachlesen:
Array sind schneller, weil List<T> intern mit einem Array arbeitet.
Jedoch ist eine Liste viel komfortabler und einfacher in der Nutzung, vorallem wenn man nicht indexbasiert arbeitet.
Der Geschwindigkeitsunterschied sollte praktisch nicht zu merken sein und in den allermeisten Fällen ist IMO List<T> zu bevorzugen.
Gruss Peter
Salute xforfun
Mittlerweile finde ich die sauberste Lösung, alles mit CSS-Klassen zu versehen und dann mit jQuery zu selektieren.
Gruss Peter
Salute Tott666
Also mein Server war gleich am nächsten Morgen zugreifbar.
Dann müssen sie im Moment wohl einen riesen Ansturm haben.
Gruss Peter
Salute xforfun
Schau mal hier (Mit Links):
Gruss Peter
Salute zusammen
Ansonsten gibts noch die Open Generic Types, dort musst du den Typen (Type-Instanz) allerdings dann sicher zur Laufzeit wissen.
Type openType = typeof(List<>);
Type elementType = typeof(int);
Type closedType = openType.MakeGenericType(elementType);
IList list = (IList)Activator.CreateInstance(closedType);
// Bzw. weisst du dann später was du für einen Typ angefordert hast und kannst ihn casten...
Gruss Peter
Salute xforfun
Benutze im Browser CTRL+F5 anstelle von F5 um den Cache zu unterdrücken, das hilft 😃
Gruss Peter
Salute Jürgen
Das Tool heisst jetzt neu scheinbar WCat, zu finden ist es hier:
Gruss Peter
Hallo zusammen
Als Ergänzung:
Statische Eigenschaften sind ja nicht überschreibbar, würde ja auch keinen Sinn machen.
Gruss Peter
Salute abra_joe
Nur der Vollständigkeits halber.
In deinem geposteten Beispiel wäre die "is"-Abfrage unsinnig, da du immer ein Objekt vom Typ Button bekommen würdest.
Gruss Peter
Hallo Stefan
Bei Schnittstellen, Basisklassen und verwandte Themen und Techniken fällt den Entwicklern der Groschen nach meiner (auch persönlicher) Erfahrung erst nach einer gewissen Zeit. Das ist also ganz normal.
Aber wenn er gefallen ist, tun sich viele Möglichkeiten auf 😃
Gruss Peter
Salute Christian
Schau dir mal den generierten Html-Code an, das geht simpler und einfacher 😃
<asp:Panel ID="panFehlermeldung" CssClass="ErrorMessage" runat="server" Visible="False">
<asp:Label ID="labFehlermeldung" runat="server"></asp:Label>
</asp:Panel>
.ErrorMessage
{
// div formatieren
}
.ErrorMessage span
{
// label formatieren
}
Gruss Peter
Hoi herbivore
[...] wenn ein Fragezeichen in der Url anzeigt, dass es sich um eine parametrisierte (und damit vermutlich dynamische) Seite handelt.
Das ist nicht ganz vollständig.
Ein leeres Fragezeichen, oder immer dasselbe ändert überhaupt nichts.
Erst wenn die sich die Parameter von mehreren Requests unterscheiden, also:
default.aspx
default.aspx?param=value
default.aspx?param=value¶m2=value2
Das Caching basiert auf der Eindeutigkeit der gesamten Url, einmal geladen verhält sich eine Parametrisierte Seite genau so wie eine normale.
Es gibt nur den Trick, das hinter einer Bild-Url ein Parameter "?rnd=<Zufallszahl>" gesetzt wird, um das Neuladen (Nicht das Cachen selber zu deaktivieren) zu forcieren.
Gruss Peter
Hoi zerberos
Ich kann mich nur wiederholen...
...bitte keine Crosspostings, siehe [Hinweis] Wie poste ich richtig? Punkt 2.2
Weiter gehts hier:
Gruss Peter
Salute Midnight Run
Wenn du nur Teilbereiche einer Webseite updaten musst, schau dir mal AJAX an.
Gruss Peter
Hallo Philip
Deine Lösung ist eher suboptimal weil der Javascript Code nicht gecacht wird.
Entweder Selektoren, ggf. Klassen mit Hilfe von jQuery nutzen, oder aber so wie in den Links im folgenden Blogpost beschrieben.
Gruss Peter
Hoi Philipp
Über die Servervariablen und dem Key "REMOTE_ADDR" kommst du an die IP-Adresse.
Jedoch wäre es auch möglich das herauszufinden, wenn du sowieso integrierte Windows Authentifizierung / AD benutzt.
Gruss Peter
Salute Tarion
Wann weisst du denn was es für einen Typ werden soll und weisst du es überhaupt?
Du kannst alles zur Laufzeit machen, das ist möglich, auch generische Typen / Methoden, ...
Bspw. Type.MakeGenericType / .MakeGenericMethod.
Allerdings nützten dir Generics auch nur etwas, wenn du an einem späteren Zeitpunkt dann einen expliziten Cast machen kannst.
Gruss Peter