Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von b0b0nr1
Thema: IIS Revers Proxy + SignalR: Handshake timeout
Am im Forum: Web-Technologien

Hi zusammen!

Dieses Problem verdirbt mir echt die ganze Woche.
Ich habe eine Docker Umgebung via Docker-Compose indem ein Container nach außen kommuniziert und den Port 6652 exposed. Darin läuft eine .net Core 3.1 Anwendung mit aktivierten Websockets und SignalR.

Rufe ich https://localhost:6652/ auf und gehe auf die Seite auf der SignalR verwendet wird (Eine Kommentar funktion die die neuen Kommentare in Echtzeit laden soll), funktioniert alles reibungslos.

Daher hab ich vermutet, das Problem muss am ReverseProxy mit ARR3 liegen und habe kurzerhand eine Subdomain in der Hosts Datei eingetragen um das lokal testen zu können.

Gehe ich nun auf die gleiche Seite aber über den Reverse Proxy (IIS10) landet der Handsake im Timeout:


[2022-01-13T18:29:07.232Z] Information: Normalizing '/sockR/hub' to 'https://devlocal.example.com/sockR/hub'.
Utils.js:151 [2022-01-13T18:29:07.233Z] Debug: Starting HubConnection.
Utils.js:151 [2022-01-13T18:29:07.233Z] Debug: Starting connection with transfer format 'Text'.
Utils.js:147 [2022-01-13T18:29:07.342Z] Information: WebSocket connected to wss://devlocal.example.com/sockR/hub.
Utils.js:151 [2022-01-13T18:29:07.342Z] Debug: The HttpConnection connected successfully.
Utils.js:151 [2022-01-13T18:29:07.342Z] Debug: Sending handshake request.
Utils.js:147 [2022-01-13T18:29:07.342Z] Information: Using HubProtocol 'json'.
... 3 Minuten später (solange geht der Timeout)
ERROR Error: Uncaught (in promise): Error: Server timeout elapsed without receiving a message from the server. Error: Server timeout elapsed without receiving a message from the server.

Natürlich habe ich vorher gegooglet und gesehen, dass man zum einen im ARR das Responerbuffering auf 1 setzen soll die Einstellungen hab ich auch so übernommen (Siehe Anhang)

Dann natürlich auch sollte eine WS/WSS Rewrite Rule vorhanden sein. Auch dies habe ich übernommen:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <urlCompression doStaticCompression="false" doDynamicCompression="false" />
        <rewrite>
            <rules>
                <rule name="WS reverse proxy" stopProcessing="true">
                    <match url="ws://devlocal.example.com" />
                    <conditions>
                        <add input="{CACHE_URL}" pattern="^(.+)://" />
                    </conditions>
                    <action type="Rewrite" url="{C:1}://127.0.0.1:6652" />
                </rule>
                <rule name="WSS reverse proxy" stopProcessing="true">
                    <match url="wss://devlocal.example.com" />
                    <conditions>
                        <add input="{CACHE_URL}" pattern="^(.+)://" />
                    </conditions>
                    <action type="Rewrite" url="{C:1}://127.0.0.1:6652" />
                </rule>

                <rule name="_Inbound_devlocal.example.com.com" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="{C:1}://localhost:6652/{R:1}" logRewrittenUrl="true" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{CACHE_URL}" pattern="^(.+)://" />
                        <add input="{HTTP_HOST}" pattern="^devlocal\.example.com\.com$" />
                    </conditions>
                </rule>

            </rules>
            <outboundRules>
                <rule name="_Outboundund_devlocal.example.com.com" stopProcessing="true">
                    <match filterByTags="A, Form, Img, Link, Script" pattern="^http(s)?://localhost:6652/(.*)" />
                    <action type="Rewrite" value="http{R:1}://devlocal.example.com.com/{R:2}" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>


Und jetzt weiß ich gerade auch nicht weiter.
SignalR is bei mir wie folgt konfiguriert:


 services.AddSignalR(hubOptions =>
            {
                hubOptions.ClientTimeoutInterval = TimeSpan.FromSeconds(240);
                hubOptions.HandshakeTimeout = TimeSpan.FromSeconds(120);
                hubOptions.KeepAliveInterval = TimeSpan.FromSeconds(60);
                hubOptions.EnableDetailedErrors =  true;
                hubOptions.MaximumReceiveMessageSize = 200;
                hubOptions.StreamBufferCapacity = 300;
            });

Der Hub ist wie folgt gemapped:


app.UseEndpoints(api =>
            { 
                api.MapControllers();
                api.MapHub<CommentsHub>("/sockR/hub"); 
            }
);


Das Failed Request Trace Log ist leer, also scheint der Handshake garnicht erst durchzukommen.
Cors erlaubt alle origins fürs Erste.
EDIT:
Websockets Feature ist installiert.
Verwende IIS10 + Docker + ARR3 auf Windows 11.

Hat jemand da eine Idee?

VG

b0b0

Thema: Fluent-Nhibernate: Child-Entity wird nach dem dem zweiten Mal hinzufügen nicht mehr geladen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MMSQL 2014

Hallo!

Ich hoffe das ist richtige Forum.

Ich verwende Fluent NHibernate.

Meine Users Entity hat beinhaltet eine TwitchProfile Entity.
Wenn ich die Entity wie folgt hinzufüge (nach erfolgter Authentification) wird die Entity wie gewollt im Profil geladen.


TwitchProfile TwitchAccount = new DB.Domain.Entities.TwitchProfile()
                    {
                        User = this.UserSession.User,
                        ChannelName = twitchChannel.name,
                        ChannelUrl = new Uri(twitchChannel.url),
                        ChatUrl = new Uri("http://www.twitch.tv/"+ twitchChannel.name +"/chat"),
                        OAuthToken = authorizeResponse.access_token,
                        ProfileUrl = new Uri("https://www.twitch.tv/"+twitchUser.name+"/profile"),
                        Scopes = String.Join(" ", authorizeResponse.scope),
                        StreamName = twitchChannel.status,
                        StreamUrl = new Uri("http://player.twitch.tv/?channel="+ twitchChannel.name),
                        TwitchID = twitchUser._id,
                        TwitchName = twitchUser.name,
                        IsLive = isOnline,
                        PreviewImage = _previewImage,
                        Game = g,
                        EmbedMode = DB.Domain.Enums.TwitchProfileSettings.TwitchProfileEmbedModeEnum.embed,
                        ShowChat = true 



                    };
                    var u = this._service.GetById(this.UserSession.User.Id);
                    if(u.TwitchAccount == null)
                        this._twitchService.Create(TwitchAccount);

Nun hat der User die Möglichkeit seinen Twichaccount natürlich auch wieder vom Profil zu entfernen. Löschen tue ich diesen wie folgt:


var u = this.UserSession.User;

        if (u.TwitchAccount != null)
        {
            var p = u.TwitchAccount;

            this._twitchService.Delete(p.Id);





        }

        return null;

Klappt alles wie gewollt. Profil entfernt. Jedoch führe ich es erneut aus und Füge es wie oben hinzu, wird der Datensatz zwar in die Tabelle TwitchProfile geschrieben mit richtigen Foreign Key, aber die Users Entity in Nhibernate sagt trotzdem Users.TwitchAccount == null.

Komischerweise klappt es in den Unit Tests. Ich benutzt MVC5 und mit einer UnitOfWork die beim start einer Action die Transaction beginnt und beim Ende diese Commitet und die Session schließt.

Der einzige Unterschied zwischen dem UnitTest und dem Controller Aufruf ist, dass im UnitTest die Session nicht geschlossen wird sondern die Transaction zwischen den einzelnen Schritten Comitted wird.


Auch wenn ich die Tabelle händisch leere wird die Entity nicht geladen wenn ich sie hinzufüge.

Lösche ich die Tabelle jedoch wird die Entity nach Hinzufügen wieder angezeigt und nach dem Löschen des Eintrags erfolgt wieder das gleiche Resultat.

Meine Mappings sind wie folgt:

Users


public class UsersOverrides : IAutoMappingOverride<Users>
{
    public void Override(AutoMapping<Users> mapping)
    {

        mapping.References(m => m.Role).ForeignKey("Role_Id").Cascade.None();
        mapping.HasMany(m => m.ProfileData).KeyColumn("User_Id").Cascade.All();

        mapping.HasOne(x => x.Avatar).Cascade.All();

        mapping.HasOne(x => x.TeamAccount).Cascade.All();


        mapping.HasMany(x => x.Sessions).Cascade.All();


        mapping.HasMany(x => x.Conversations).Cascade.All();

        mapping.HasMany(x => x.Relations).Cascade.All();

        mapping.HasMany(x => x.Ignores).Cascade.All();

        mapping.HasMany(x => x.Threads).Cascade.None();
        mapping.HasMany(x => x.Posts).Cascade.None();

        mapping.HasMany(x => x.GameProfiles).Cascade.All();

        mapping.HasOne(x => x.Steamprofile).Cascade.All();

        mapping.HasOne(x => x.TwitchAccount).Cascade.Delete();
    }
}

TwitchProfile


public class TwitchProfileOverrides : IAutoMappingOverride<TwitchProfile>{
    public void Override(AutoMapping<TwitchProfile> mapping)
    {

        mapping.References(x => x.Game).Cascade.None(); 
        mapping.References(x => x.User).Cascade.Persist();
    }
}


Ich kämpfe mit dem Problem jetzt seit Wochen und komme dabei auf keinem grünen Zweig.

Ich hoffe mir kann da wer helfen :-)


Best,

b0b0

Thema: [erledigt] Visual Studio zeigt nicht auf Codebehind Klasse / Variablen als nicht definiert an
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

Es handelt sich um Webforms. Aber habe jetzt noch mehrere Sachen gefunden, und übertrage den Code einfach in ein frisches Projekt


danke trotzdem.

Thema: [erledigt] Visual Studio zeigt nicht auf Codebehind Klasse / Variablen als nicht definiert an
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

hat leider nix gebracht. Er sucht weiterhin die Sachen in "ASP.content_create"

Die klasse gibt es nicht mal bei mir und ich finde auch nirgens einen Verweis darauf.

hier meine web.config :


<?xml version="1.0"?>
<!-- 
    Hinweis: Alternativ zur manuellen Bearbeitung dieser Datei 
    können Sie auch mit dem Webverwaltungstool die Einstellungen 
    für Ihre Anwendung konfigurieren. Verwenden Sie die Option 
    "Website->ASP.NET-Konfiguration" in Visual Studio. Eine 
    vollständige Liste aller Einstellungen und Kommentare befindet 
    sich in "machine.config.comments", im Allgemeinen unter "\Windows\Microsoft.Net\Framework\v2.x\Config". 
-->
<configuration>
  <appSettings>
    <add key="todayexportet15" value="0"/>
    <add key="todayexportet23" value="0"/>
    <add key="lastexport" value="00.00.0000"/>
    <!--the resolution break-points to use (screen widths, in pixels)-->
    <add key="AdaptiveImages.ResolutionBreakpoints" value="1382, 992, 768, 480"/>
    <!--where to store the generated re-sized images. This folder must be writable-->
    <add key="AdaptiveImages.CachePath" value="ai-cache"/>
    <!--the quality of any generated JPGs on a scale of 0 to 100-->
    <add key="AdaptiveImages.JpegQuality" value="80"/>
    <!--check that the responsive image isn't stale (ensures updated source images are re-cached)-->
    <add key="AdaptiveImages.WatchCache" value="true"/>
    <!--How long the BROWSER cache should last in seconds. (604800 - 7 days by default)-->
    <add key="AdaptiveImages.BrowserCache" value="604800"/>
    <!-- If there's no cookie false sends the largest var resolutions version (TRUE sends smallest)-->
    <add key="AdaptiveImages.MobileFirst" value="true"/>
    <!--the name of the cookie containing the resolution value-->
    <add key="AdaptiveImages.CookieName" value="resolution"/>
    <add key="SteamApiKey" value="..."/>
    <add key="FBAppID" value="..."/>
    <add key="RouteDebugger:Enabled" value="false"/>
  </appSettings>
  <connectionStrings>
    <add connectionString="..." providerName="System.Data.SqlClient" name="con"/>
  </connectionStrings>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="1000"/>
    </connectionManagement>
  </system.net>
  <!--
    Eine Beschreibung der Änderungen von 'web.config' finden Sie unter 'http://go.microsoft.com/fwlink/?LinkId=235367'.

    Die folgenden Attribute können für das <httpRuntime>-Tag festgelegt werden.
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
   
    <httpRuntime executionTimeout="11800" maxRequestLength="1048576" useFullyQualifiedRedirectUrl="false" requestValidationMode="2.0"/>
    <!--
    <customErrors defaultRedirect="InternalError.htm"
                    mode="RemoteOnly">
      <error statusCode="500"
             redirect="InternalError.htm"/>
      <error statusCode="404"
                   redirect="error.aspx?error=404"/>
      
    </customErrors>
-->
    <!-- 
            Legen Sie beim Kompilieren debug="true" fest, um 
            Debugsymbole in die kompilierte Seite einzufügen. 
            Da dies die Leistung beeinträchtigt, sollte der 
            Wert nur beim Entwickeln auf "True" gesetzt werden.
        -->
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <!--
            Der Abschnitt <authentication> ermöglicht die Konfiguration 
            des Sicherheitsauthentifizierungsmodus, mit dem 
            ASP.NET eingehende Benutzer identifiziert.   
        -->
    <authentication mode="Windows"/>
    <!--
            Der Abschnitt <customErrors> ermöglicht die Konfiguration 
            der Vorgehensweise bei unbehandelten Fehlern während 
            der Anforderungsausführung. Insbesondere können 
            Entwickler HTML-Fehlerseiten konfigurieren, die anstelle 
            einer Fehlerstapelüberwachung angezeigt werden.

        
    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
      <error statusCode="403" redirect="error.aspx?error=405" />
      <error statusCode="404" redirect="error.aspx?error=404" />
    </customErrors>
  -->
    <!--
    

-->
    <customErrors mode="Off" defaultRedirect="error.aspx?error=500">
      <error statusCode="404" redirect="error.aspx?error=404"/>
      <error statusCode="403" redirect="error.aspx?error=403"/>
    </customErrors>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
      </controls>
      <namespaces>
        <add namespace="NetworkFreaks_DE"/>
        <add namespace="NetworkFreaks_DE.ACP"/>
        <add namespace="NetworkFreaks_DE.Controls"/>
        <add namespace="NetworkFreaks_DE.Controls.admin"/>
      </namespaces>
    </pages>
  </system.web>
  <!-- 
        Der system.webServer-Abschnitt ist zum Ausführen von ASP.NET AJAX unter
        Internetinformationsdienste 7.0 erforderlich. Für frühere Versionen von
        IIS ist er nicht erforderlich.
    -->
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="AdaptiveImageHandlerGif" path="*.gif" verb="GET" type="AdaptiveImages.AdaptiveImageHandler"/>
      <add name="AdaptiveImageHandlerJpg" path="*.jpg" verb="GET" type="AdaptiveImages.AdaptiveImageHandler"/>
      <add name="AdaptiveImageHandlerPng" path="*.png" verb="GET" type="AdaptiveImages.AdaptiveImageHandler"/>
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

*EDIT*

Komischer Weise funktioniert es aber in Seiten ohne Master Page doch in solchen Fällen hier nicht:

<asp:Content ID="Content1" ContentPlaceHolderID="Content" runat="server">
   <%=this.Test %>
</asp:Content>

Thema: [erledigt] Visual Studio zeigt nicht auf Codebehind Klasse / Variablen als nicht definiert an
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

Ich hab schon google probiert und kam auch durch stackoverflow auf keine Lösung für mein Problem.

Ich hab ein Webforms Projekt. Mit einem Unterordner "ACP" fürs Backend. Dort liegt die ASPX Seite "Content.Create.aspx" mit Codebehind Datei.

Meine Erstellten Controlls liegen fürs Backend in "~/Controls/admin/"

Weder die String-Variable "EntryType", welche in der Codebehinddatei liegt, noch meine Controls werden erkannt. Somit zeigt mit die IDE alles als nicht definiert an.

Komisch ist auch dass die Fehlermeldung wie folgt ist siehe Angang, auf einen ganz anderen Namespace zeigt, denn der der Codebhind datei ist "NetworkFreaks.ACP"

Kann die Projektdatei beim einchecken / auschecken von PC zu Notbook via GIT kaputt gegangen sein? Denn auf dem NB hab ich das Problem auch. Ebenfalls 2013er Express Version.

BTW: Deploy, Builden und ausführen geht reibungslos, somit denke ich dass es ein Problem in VS sein muss.


Weiß wern Rat?

VG

b0b0

Thema: Open Source Projekt: Ren.CMS.NET (MVC 4) (Noch Helfer gesucht)
Am im Forum: Projekte

Hallo allerseits,

Ich möchte hier einmal kurz und bündig mein Open Source Projekt vorstellen (Github: https://github.com/nfMalde/Ren.CMS.NET) und suche gleichzeitig Helfer/Mitentwickler.

Vorher MVC2/3 habe ich nach rund 2 Jahren Entwicklung das Projekt ständig erweitert und auf MVC4 kovertiert (zu ca 90%, mehr zurzeit leider durch meine Arbeit und andere Sachen die dazwischen kamen nicht möglich da dies viele Änderungen in den Klassen mit sich führen würde.)

Zugegeben es ist erst seit ca einem halben Jahr Open Source, da ich es vorher nur für mich privat genutzt habe, um mir diverse Sachen anzueignen, die ich für die Ausbildung brauchte. Kurz nach der Ausbildung habe ich mich dennoch dazu entschlossen es zu veröffentlichen und es auf Github verfügbar gemacht.

Wie gesagt, da es vorher nur ein Lernprojekt war, sieht man an manchen Stellen noch "Spaghetti Code", ich arbeite jedoch daran das zu "Entwirren".

Das CMS trägt den Namen "Ren.CMS.NET" und unterstützt bereits folgende Features:

- Videokonvertierung
- Thumbnailgenerierung
- Rechteverwaltung (Bisher nur auf Datenbank Ebene)
- Usersettings
- Benutzerverwaltung
- Inhaltsverwaltung
- Kategorieverwaltung.
- Filemanagement mit Wasserzeichen oder Ohne je nach Einstellung
- Lokalisierung
- VideoJS implementierung
- Galerie

Es ist Modular aufgebaut, da ich wollte, dass sich jeder Nutzer seine Module selbst bauen kann, und wie man es bei anderen Erweiterungen kennt auch dessen Lizenz dann selbst bestimmen darf. Im Repository werden jedoch keinerlei Module landen die nicht von mir oder den vllt Mitentwicklern stammen und dessen Source Code einsehbar ist (Sprich nur es kommen nur Module die fest zum Kern des CMS gehören).

Später soll jedes Modul übers Backend installierbar sein. Und dem Admin der es installiert VOR der Installation Auskunft darüber geben welche Assemblys und Namespaces es verwendet und worauf das Modul zugreift.

Sowie eine Möglichkeit einzelne Module ganz zu deaktivieren (auch deren komplette Ausführung), jedoch steht das weit hinten in den TODOs.

Auf dem TODO stehen jede Menge Features / Fixes / Improvements, und wer in die Issues bei Github schaut, sieht schnell ich den Bereich dort dafür verwendet keine Idee verloren gehen zu lassen.

Es ist bereits ein Deployserver vorhanden der den aktuellen Stand auf die Demoseite spielt, jedoch da dieser selbst geschrieben ist gab es ein zwei Probleme, daher ist die Seite noch nicht aufrufbar.


Sollte es noch fragen geben werde ich die gerne beantworten :-)

MFG

Malte

Thema: MVC4: Fehler "Zirkelverweis erkannt"
Am im Forum: Web-Technologien

Hi!

Ich hab den Fehler gefunden :-)

Ich weiß zwar immer noch nicht warum das dadurch so gekommen ist aber hier:



return Json(new
            {
                success = false,
                message = LanguageDefaultsMessages.LANG_SHARED_MESSAGE_FORM_NOT_VALID

//             modelStateKeys = ModelState.ToDictionary(e => e.Key),
  //              modelStateValues = ModelState.ToDictionary(e => e.Value)
            });


Die auskommentierten zwei Zeilen warn der Auslöser.

Thema: MVC4: Fehler "Zirkelverweis erkannt"
Am im Forum: Web-Technologien

@Abt.

Dis nContentPostModel beinghaltet ein IENumerable von typ nContentPostModelTexts.


@Mr. Sparkle:

Die ReturnlangLine methode gibt aus der Datenbank zur aktuellen Sprache eine "Lang Line" aus:



    public class LanguageDefaultValues : IEnumerable
    {
        #region Fields

        public string LangCode = "__USER__";
        public string Package = "Root";

        private Type baseType = null;
        private LanguageCode[] codes = null;
        private string Langlinename = "";
        private Dictionary<string, string> myCol = new Dictionary<string, string>();
        private LanguagePackage[] packages = null;
        private PropertyInfo[] props = null;
        private object[] sobjData = null;

        #endregion Fields

        #region Constructors

        public LanguageDefaultValues(string languageLinename, string Packagename = "Root", string LangCode = "__USER__")
        {
            this.Package = Packagename;
            this.LangCode = LangCode;
            this.Langlinename = languageLinename;
        }

        #endregion Constructors

        #region Methods

        public void Add(string langCode, string Value)
        {
            myCol.Add(langCode, Value);
        }

        public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
        {
            return myCol.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }

        public string ReturnLangLine()
        {
            Dictionary<string, string> DefaultVal = myCol;
            string LangLine = this.Langlinename;

            string package = this.Package;
            string code = this.LangCode;

            CORE.Language.Language Lang = new CORE.Language.Language(code, package);

                string langName = this.Langlinename;

                return Lang.getLine(langName, DefaultVal);

            return "";
        }

        public Dictionary<string, string> ToDictionary()
        {
            return this.myCol;
        }

        private string _getLangName(Expression<Func<string, string>> f)
        {
            string name =  ((f.Body as MemberExpression).Member.Name);
               return name;
        }

        #endregion Methods
    }



Referenz zur Language Klasse:



   public class Language
    {
        #region Fields

        ThisApplication.ThisApplication AppT = new ThisApplication.ThisApplication();
        private string lineName = "";
        private string lngcode = null;
        private string pPackage = "Root";
        private MembershipUser User = new MemberShip.nProvider.CurrentUser().nUser;

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Init the Language  Class with a given Lang-Code
        /// </summary>
        /// <param name="langcode">Lang-Code for this Instance</param>
        /// <param name="package">The Package for the Language Instance (Default: Root)</param>
        public Language(string langcode, string package = "Root")
        {
            if (langcode == "__USER__")
            {
                langcode = Helper.CurrentLanguageHelper.CurrentLanguage;
            }

            this.lngcode = langcode;
            this.pPackage = package;
        }

        /// <summary>
        /// Init the Language Class and sets the Lang-Code to "deDE"
        /// </summary>
        /// <param name="package">The Package for the Language Instance (Default: Root)</param>
        public Language()
        {
        }

        /// <summary>
        /// Instant init. This Init activates the  "GetInstant()" Function and returns directly an language line.
        /// Example: Name = new Language("name","Root","deDE").GetInstant();
        /// </summary>
        /// <param name="LangLineName">Name of the language line</param>
        /// <param name="PackageName">Name of the Package</param>
        /// <param name="code">Language code (default: deDE)</param>
        public Language(string LangLineName, string PackageName, string code = "deDe")
        {
            this.lineName = LangLineName;
            this.pPackage = PackageName;
            this.lngcode = code;
        }

        #endregion Constructors

        #region Properties

        /// <summary>
        /// Sets the Package for this instance. Default: Root
        /// </summary>
        public string Package
        {
            get { return this.pPackage; }
            set { this.pPackage = value; }
        }

        #endregion Properties

        #region Methods

        public string GetInstant()
        {
            return this.getLine(lineName);
        }

        /// <summary>
        /// Loads a Language Line String from the Package (Set by this.Package / Default: Root)
        /// </summary>
        /// <param name="name">Name of the Language Line</param>
        /// <returns>(String)Content</returns>
        public string getLine(string name, Dictionary<string, string> DefaultReturnValue = null)
        {
            SqlHelper Sql = new SqlHelper();
            string cmd = "SELECT TOP 1 * FROM " + AppT.getSqlPrefix + "Language WHERE Package=@Package AND Name=@Name AND Code=@Code";
            SqlParameter[] P = new SqlParameter[] {

            new SqlParameter("@Package",this.pPackage),
            new SqlParameter("@Name",name),
            new SqlParameter("@Code",this.lngcode)

            };
            string line = "";
            try
            {

                Sql.SysConnect();
                SqlDataReader Reader = Sql.SysReader(cmd, P);
                Reader.Read();
                if (Reader.HasRows)
                {
                    line = ((string)Reader["Content"]);

                }
                Sql.SysDisconnect();
            }
            catch (SqlException e) { line = e.Message; }
            finally { }

            if (!LanglineExists(name, Package, this.lngcode) && DefaultReturnValue != null)
            {

                line = this.registerDefaultValues(name, this.pPackage, DefaultReturnValue);

            }
            if (String.IsNullOrEmpty(line)) line = name;

            return line;
        }

        /// <summary>
        /// Inserts an Language Line.
        /// </summary>
        /// <param name="name">Name of the Line</param>
        /// <param name="Content">Content of the Line</param>
        public void InsertLine(string name, string Content, bool overwriteDB = false)
        {
            //Checking for langline

            SqlHelper Sql = new SqlHelper();
            Sql.SysConnect();

            if (this.LanglineExists(name, Package, this.lngcode) && !overwriteDB)
                throw new Exception("Language Line " + name + "(" + this.lngcode + ") does allready exists in Package: " + Package);

            string cmd = "INSERT INTO " + AppT.getSqlPrefix + "Language (Name, Content, Package, Code) VALUES (@Name,@Content,@Package,@Code)";
            SqlParameter[] Parameters = new SqlParameter[]{
            new SqlParameter("@Name", name),
            new SqlParameter("@Content", Content),
            new SqlParameter("@Package", this.pPackage),
            new SqlParameter("@Code", this.lngcode),

            };
            try
            {

                Sql.SysNonQuery(cmd, Parameters);
                Sql.SysDisconnect();

            }
            catch (SqlException e)
            {

                throw e;

            }
            finally
            {

            }
        }

        public bool LanglineExists(string LangName, string LangPackage, string LangCode)
        {
            if (LangCode == "__USER__" && HttpContext.Current.Request.IsAuthenticated)
            {
                if (User == null) User = new MemberShip.nProvider.CurrentUser().nUser;
                Settings.UserSettings Us = new Settings.UserSettings(User);

                object lc = Us.getSetting("langCode").Value;
                if (lc != null) LangCode = lc.ToString();
                else LangCode = "";
            }
            if (String.IsNullOrEmpty(LangCode))
            {

                SettingsHelper.GlobalSettingsHelper GS = new SettingsHelper.GlobalSettingsHelper();

                LangCode = GS.Read("GLOBAL_DEFAULT_LANGUAGE");

            }

            string check = "SELECT * FROM " + AppT.getSqlPrefix + "Language WHERE Name=@name AND Package=@package AND Code=@code";

            SqlHelper Sql = new SqlHelper();
            Sql.SysConnect();
            bool exists = false;
            SqlDataReader R = Sql.SysReader(check, new nSqlParameterCollection(){ {"@name", LangName },
                                                                                  {"@package", LangPackage},
                                                                                  {"@code", LangCode}});
            exists = R.HasRows;

            R.Close();
            Sql.SysDisconnect();
            return exists;
        }

        private string registerDefaultValues(string forLangLine, string forPackage, Dictionary<string, string> DefaultReturnValue)
        {
            string returnValue = null;

            //Database Action

            CORE.SqlHelper.SqlHelper SQL = new CORE.SqlHelper.SqlHelper();

            CORE.ThisApplication.ThisApplication TA = new CORE.ThisApplication.ThisApplication();

            string prefix = TA.getSqlPrefix;

            string query = "SELECT code FROM " + prefix + "Lang_Codes";
            CORE.SqlHelper.nSqlParameterCollection SQLCOL = new CORE.SqlHelper.nSqlParameterCollection();

            SQL.SysConnect();

            SqlDataReader Codes = SQL.SysReader(query, SQLCOL);
            Language Lang = null;
            if (Codes.HasRows)
            {

                while (Codes.Read())
                {

                    Lang = new Language((string)Codes["code"], forPackage);

                    if (DefaultReturnValue[(string)Codes["code"]] == null)
                    {

                        DefaultReturnValue.Add((string)Codes["code"], DefaultReturnValue.Where(code => code.Value != null).First().Value);

                    }
                    Lang.InsertLine(forLangLine, DefaultReturnValue[(string)Codes["code"]]);

                }

            }
            Codes.Close();

            Lang = new CORE.Language.Language(this.lngcode, forPackage);
            returnValue = Lang.getLine(forLangLine);
            if (returnValue == "")
            {
                returnValue = forLangLine;

            }
            SQL.SysDisconnect();

            return returnValue;
        }

        #endregion Methods
    }
}



EDIT: http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model-Binder Gerade gelesen. Bin gerade nicht Zuhause aber ich werde es damit zuhause einmal probieren (Custom Model Binder) Für alternative Ideen bin ich jedoch trotzdem sehr dankbar :-)

Thema: MVC4: Fehler "Zirkelverweis erkannt"
Am im Forum: Web-Technologien

Darauf bin ich auch schon gestoßen,

Jedoch gehen alle anderen Forms, an die ich Models übergebe.

Ich hatte gehofft die Logik beibehalten zu können und das Problem anders zu lösen.

Thema: MVC4: Fehler "Zirkelverweis erkannt"
Am im Forum: Web-Technologien

Hallo!

Ich bekomme merkwürdiger Weise einen Fehler in meinem OpenSource CMS.
Undzwar möchte ich einen AjaxRequest machen und per JSON dann ganz normal success=true oder false und eine message zurückgeben.

Vorher habe ich immer in Plaintext "Inhalt erfolgreich erstellt" ausgegeben und es war ein normales ActionResult.

Merkwürdigweise ist das das einzige Form, welches mir diesen Fehler zurückgibt. Und dies auch nicht mal im debugger selber. Sondern es scheint direkt vom DevServer zu kommen.


Breakpoints sagen mir dass die Action korrekt durchgelaufen wird.

Ich dachte eventuell liegt es an meinem PC...daher habe ich das Repository auf meinem Notebook erneut gecloned und ach da der gleiche Fehler:

Fehler
Beim Serialisieren eines Objekts vom Typ "System.Globalization.CultureInfo" wurde ein Zirkelverweis erkannt.

Hier ist der Code der Action:


    [HttpPost]
        [nPermissionVal(NeededPermissionKeys="USR_CAN_CREATE_CONTENT")]
        public JsonResult AddContent(Models.Core.nContentPostModel MDL, nContentTextBinder Binder)
        {
            MDL.Texts = Binder.Bind();

            Ren.CMS.Content.ContentValidator Cval = new Content.ContentValidator();

            if (!Cval.isValidPostModelForInsert(MDL))

                return Json(new
                {
                    success = false,
                    message = LanguageDefaultsMessages.LANG_SHARED_MESSAGE_FORM_NOT_VALID,
                    modelStateKeys = ModelState.ToDictionary(e => e.Key),
                    modelStateValues = ModelState.ToDictionary(e => e.Value)
                });

            MDL.Texts.ToList().ForEach(e => e.LongText = HttpUtility.UrlDecode(e.LongText));
            var Props = MDL.GetType().GetProperties().Where(e => e.PropertyType == typeof(string));
            foreach (var prop in Props)
                prop.SetValue(MDL, HttpUtility.UrlDecode((prop.GetValue(MDL) ?? String.Empty).ToString()));

            Ren.CMS.Content.ContentManagement CtM = new Content.ContentManagement();
            Ren.CMS.Content.nContent ContentModel = new Content.nContent(MDL);
            CtM.InsertContent(ContentModel);
            if (MDL.Tags != null)
                CtM.bindTagsToContent(MDL.ID, MDL.Tags);

            return Json(new { success = true, message = LanguageDefaultsMessages.LANG_SHARED_MESSAGE_FORM_CONTENT_SAVED.ReturnLangLine() });
        }



nContentPostModel:



 public class nContentPostModel
    {
        #region Properties

        /// <summary>
        /// Returns the Category object
        /// </summary>
        /// 
        [Required]
        public string CategoryID
        {
            get;
            set;
        }

        /// <summary>
        /// Returns the Content Type of the Content
        /// </summary>
        /// 
        [Required]
        public string ContentType
        {
            get;
            set;
        }

        public DateTime CreationDate
        {
            get;
            set;
        }

        /// <summary>
        /// Returns the Username of the Creator
        /// </summary>
        public string CreatorName
        {
            get;
            set;
        }

        /// <summary>
        /// Returns the Creators PK ID
        /// </summary>
        ///
        [Required]
        public string CreatorPKID
        {
            get;
            set;
        }

        public string CreatorSpecialName
        {
            get; set;
        }

        //Eigenschaften
        /// <summary>
        /// Returns the ID of the Content
        /// </summary>
        /// 
        public int ID
        {
            get;
            set;
        }

        /// <summary>
        /// Returns Boolean of the Locked Status of the Content
        /// </summary>
        ///  
        public bool Locked
        {
            get;
            set;
        }

        public int ReferenceID
        {
            get;
            set;
        }

        public int[] Tags
        {
            get; set;
        }

        public IEnumerable<nContentPostModelText> Texts
        {
            get; set;
        }

        #endregion Properties
    }



nContentTextBinder:



 public class nContentTextBinder
    {
        #region Properties

        public List<bool> Active
        {
            get; set;
        }

        public List<string> LangCode
        {
            get; set;
        }

        public List<string> LongText
        {
            get; set;
        }

        public List<string> MetaDescription
        {
            get; set;
        }

        public List<string> MetaKeyWords
        {
            get; set;
        }

        public List<string> PreviewText
        {
            get; set;
        }

        public List<string> SEOName
        {
            get; set;
        }

        public List<int> TextID
        {
            get; set;
        }

        public List<string> Title
        {
            get; set;
        }

        #endregion Properties

        #region Methods

        public List<nContentPostModelText> Bind()
        {
            List<nContentPostModelText> B = new List<nContentPostModelText>();
            if (IsN()) return B;
            for (int x = 0; x < Active.Count; x++)
            {
                nContentPostModelText Bb = new nContentPostModelText();
                Bb.Active = Active[x];

                if (Title.Count > x)
                {
                    Bb.Title = Title[x];

                }
                if (PreviewText.Count > x)
                {
                    Bb.PreviewText = PreviewText[x];

                }
                if (LongText.Count > x)
                {
                    Bb.LongText = LongText[x];

                }
                if (SEOName.Count > x)
                {
                    Bb.SEOName = SEOName[x];

                }
                if (MetaDescription.Count > x)
                {
                    Bb.MetaDescription = MetaDescription[x];

                }
                if (MetaKeyWords.Count > x)
                {
                    Bb.MetaKeyWords = MetaKeyWords[x];

                }
                if (TextID.Count > x)
                {
                    Bb.TextID = TextID[x];

                }
                if (LangCode.Count > x)
                {
                    Bb.LangCode = LangCode[x];

                }

                B.Add(Bb);

            }

            return B;
        }

        private bool IsN()
        {
            if (Title == null) return true;
            if (PreviewText == null) return true;
            if (LongText == null) return true;
            if (SEOName == null) return true;
            if (MetaDescription == null) return true;
            if (MetaKeyWords == null) return true;
            if (TextID == null) return true;
            if (Active == null) return true;
            if (LangCode == null) return true;

            return false;
        }

        #endregion Methods
    }



Die View würde den Thread sprengen daher hier nur der Link zur Datei im Repository:
<Link entfernt>


Ich bin echt ratlos. Wär echt nett wenn jemand eine Idee hätte wo der Fehler herkommen könnte.

Ich habe schon alle Dateien durchsucht, ob ich irgendwo was mit der CultureInfo mache aber auch da leider Fehlanzeige.

mfg

b0b0

Thema: Nhibernate - Problem mit dem Mapping? Aber wo?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL2008

Hi,

ich habe seit kurzen auf NHIBERNATE umgestellt. Habe jedoch bei einer Tabelle besondere Probleme in dem nichts zurück kommt.

Hiereinmal das Mapping der besagten Tabelle:


  public class ContentAttachmentMap : ClassMapping<ContentAttachment> {
        
        public ContentAttachmentMap() {
			Table(CMS.CORE.Config.DB.Prefix.Replace("dbo.", "") +"Content_Attachment");
			Schema("dbo");
			Lazy(true);
			//Property(x => x.Pkid, map => map.NotNullable(true));
            Id<Guid>(x => x.Pkid, map => map.Generator(Generators.Guid));
			Property(x => x.Nid, map => map.NotNullable(true));
			Property(x => x.AttachmentType, map => { map.Column("attachment_type"); map.NotNullable(true); });
			Property(x => x.ContentType, map => { map.Column("content_type"); map.NotNullable(true); });
			Property(x => x.FPath);
			Property(x => x.FName);
			Property(x => x.ThumpNail);
			Property(x => x.AttachmentArgument);
			Property(x => x.ATitle);
        }
    }

Die Entity class:


    public class ContentAttachment {
        public virtual System.Guid Pkid { get; set; }
        public virtual int Nid { get; set; }
        public virtual string AttachmentType { get; set; }
        public virtual string ContentType { get; set; }
        public virtual string FPath { get; set; }
        public virtual string FName { get; set; }
        public virtual string ThumpNail { get; set; }
        public virtual string AttachmentArgument { get; set; }
        public virtual string ATitle { get; set; }
    }


Ich rufe um anhand der Pkid das Attachment zu kriegen folgende Funktion auf:


public ContentAttachment GetByPKid(Guid pkid)
         {
 
             using (ISession session = NHibernateHelper.OpenSession())
             {
                 return session.QueryOver<ContentAttachment>().Where(e => e.Pkid == pkid).Take(1).SingleOrDefault();
             }


         
         
         }


Ich lass aufm SQL Server den Profiler mitlaufen um besser die SQL Queires von nHiernate zu debuggen, jedoch kommt nicht mal ein SQL beim Server an, nhibernate spuckt jedoch auch keinerlei Fehler aus.

Woran könnte das liegen? Ich steht da grad etwas aufm Schlauch.

Es geht die komplette Entity nicht, also selbst wenn ich mir die ersten 100 Zeilen ausgeben lassen möchte kommt nichts zurück.

Thema: Webdeploy - Command Line mit Profil veröffentlichen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Habs gelöst:

Nicht direkt mit MSDEPLOY
C:\Windows\Microsoft.NET\Framework64\v4.0.30319> msbuild "C:\Program Files (x86)\VisualSVN Server\bin\myproj\myproj.csproj" /p:DeployOnBuild=true;PublishProfile=toBeta

Thema: Webdeploy - Command Line mit Profil veröffentlichen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi!

Ich benutze als Repository VisualSVN und entsprechenden Server. Den SVN Server habe ich an mein Build tool "CruiseControl.NET" bereits erfolgreich angedockt.

Ich habe in meinem MVC3 Projekt bei Veröffentlichen das Profil "toBeta", wo ebenfalls der ConnectionString meiner BetaUmgebung automatisch in die Web.config eingefügt wird.

Nun möchte ich nachdem in CruiseControl der Build erfolgreich war, das Projekt per Webdeploy auf den beta server hochschieben.

Leider funktioniert das nicht so wie ich möchte. Ich finde auch leider keinen Parameter, mit dem ich das Profil festlegen kann.

Kann mir wer helfen?

VG

b0b0

Thema: Addin gesucht: Verweise zwischen Libraries grafisch darstellen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ui...danke bin auf den Link gekommen wo das Tool aus der 2010 Ultimate gezeigt wurd nochmal und siehse da in VS2012 ist es unter Rechtsklick -> Klassendiagramm anzeigen. Nice... danke :)

Thema: Addin gesucht: Verweise zwischen Libraries grafisch darstellen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi!

Ich suche ein wie o.g. Addin um die Beziehungen der Einzelnen Libraries grafisch darzustellen.

Ähnlich wie ein UML Diagram. Außer die Funktion, welche in der Ultimate von VS drin sein soll kenn ich leider keine (Habe Professional).

Kennt wer ein solches Addin? Eine Schlichte grafik ohne Schnick Schnack reicht aus.

Ich kommt nämlich bei meinem Projekt langsam dazu den Überblick zu verlieren^^

vg

b0b0

Thema: Custom Attribute innerhalb der Klasse auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ah, ok... also muss ich mir die FieldInfo vorher holen richtig?

Thema: Custom Attribute innerhalb der Klasse auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

ich steh vor einem Problem und hab gehofft mir kann jemand helfen, google und co ergaben leider keine Lösungen für mich.


Ich hab eine Klasse, welche später als Collection genutzt wird, abgeleitet von einem IENumerable.

Innerhalb dieser Klasse hab ich die Funktion "ReturnLangLine".

Der Sinn dahinter ist, dass ich anhand von Attributen die darauf gesetzt sind herausfinden möchte Welcher LangCode und Welches Package genutzt werden soll.

Sind auf der Datenbank diese nicht vorhanden werden Sie ahand der Collection erstellt.


Ich habe erstmal nur den PackageName als Attribut:


    [System.AttributeUsage(System.AttributeTargets.All)]
    public class LanguagePackage : System.Attribute
    { 
        private string name;
        public LanguagePackage(string Code)
        {
            

            name = Code;
            
        }
        public string Name
        {
        get{ return this.name; }
        
        }
    
    }



Außerdem möchte ich im Constructor meiner Klasse das Attribut schon auslesen:



 public class LanguageDefaultValues : IEnumerable
    {
        private Dictionary<string, string> myCol = new Dictionary<string, string>();
        private LanguagePackage[] packages = null;
        private LanguageCode[] codes = null;
        private object[] sobjData = null;
        private Type baseType = null;
        private PropertyInfo[] props = null;
        public string Package = "Root";
        public string LangCode = "__USER__";

        public LanguageDefaultValues()
        {
          
            Type t = this.GetType();

            MemberInfo MI = typeof(LanguageDefaults.LanguageDefaultValues);

            sobjData = MI.GetCustomAttributes(true);


            packages = (LanguagePackage[])t.GetCustomAttributes(typeof(LanguagePackage), true);
            codes = (LanguageCode[])t.GetCustomAttributes(typeof(LanguageCode), true);
            if (sobjData.Length ≥ 1) { }
           
        }

......



Um so auf den Packagetype und den Langcode zu kommen.


In der Praxis sieht das Ganze dann so aus:



 public static class Test
    {
        
        [LanguagePackage("TESTPKG")]
        public static LanguageDefaultValues TEST_LANG_NAME= new LanguageDefaultValues(){
                                                            { "de-DE", "TEST-DEUTSCH" },
                                                            { "en-US", "TEST_ENGLISCH" }};


}





Jedoch gibt er immer aus dass packages = (LanguagePackage[])t.GetCustomAttributes(typeof(LanguagePackage), true);


leer ist.



Ich finde einfach den Fehler nicht. Kann mir wer helfen?

VG

b0b0

Thema: Jquery Widget via AJAX geladen verusacht Dauer Errors(MVC3)
Am im Forum: Web-Technologien

Hallo Leute,

in meinem Backend lade ich die einzelnen Controlls via AJAX (jquery widgets) und render im Controller in MVC3 damit eine View.

Dies klappt auch wunderbar ich kann wie in Windows Fenster öffnen und schließen, sie verschieben etc...

Nun kam ich zum Widget für die Inhaltserstellung. Der Haupttext soll HTML beinhalten daher brauchte ich einen WYSIWYG Editor und habe mich für TinyMCE entschieden.

Hierfür habe ich via NUGET das Package TinyMCE.MVC.Jquery installiert.

Schön und gut der TinyMCE Editor wird auch angezeigt und funktioniert schleudert aber nach Kurzer Zeit wirft er folgende Javascript Fehler aus:


Uncaught TypeError: Object [object Object] has no method 'split' backend-gui.js:880
$.droppable.drop backend-gui.js:880
e.Widget._trigger jquery-ui-1.9.2.custom.min.js:6
e.widget._drop jquery-ui-1.9.2.custom.min.js:6
(anonymous function) jquery-ui-1.9.2.custom.min.js:6
(anonymous function) jquery-ui-1.9.2.custom.min.js:6
jQuery.extend.each jquery-1.8.3.js:611
e.ui.ddmanager.drop jquery-ui-1.9.2.custom.min.js:6
e.widget._mouseStop jquery-ui-1.9.2.custom.min.js:6
(anonymous function) jquery-ui-1.9.2.custom.min.js:6
e.widget._mouseUp jquery-ui-1.9.2.custom.min.js:6
(anonymous function) jquery-ui-1.9.2.custom.min.js:6
e.widget._mouseUp jquery-ui-1.9.2.custom.min.js:6
(anonymous function) jquery-ui-1.9.2.custom.min.js:6
_mouseUpDelegate jquery-ui-1.9.2.custom.min.js:6
jQuery.event.dispatch jquery-1.8.3.js:3058
elemData.handle.eventHandle



-----------------------------------------------------------------

GET http://localhost:10118/Backend/[object%20Object] 404 (Not Found) jquery-1.8.3.js:6325
jQuery.extend.clean jquery-1.8.3.js:6325
jQuery.buildFragment jquery-1.8.3.js:6164
jQuery.fn.extend.domManip jquery-1.8.3.js:5974
jQuery.fn.extend.append jquery-1.8.3.js:5777
b.fn.(anonymous function)
widgetAction backend-widgets.js:105
(anonymous function) backend-gui.js:324
jQuery.event.dispatch jquery-1.8.3.js:3058
elemData.handle.eventHandle

------------------------------------------------------------------

Uncaught TypeError: Cannot read property 'body' of null
m.create.getBody
m.create.getContent
m.create.isDirty
e.create.storeDraft editor_plugin.js:1
(anonymous function)




Ich benutze die Standart View für den TinyMCE, welche mitinstalliert wurde:



@*
Don't forget to reference the JQuery Library here, inside your view or layout.
<script src="@Url.Content("~/Scripts/jquery-x.x.x.min.js")" type="text/javascript"></script>
*@

<script src="@Url.Content("~/Scripts/tinymce/jquery.tinymce.js")" type="text/javascript"></script>

<script type="text/javascript">

    (function(){ 

      $(function() { 
      
          $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({

            // Location of TinyMCE script
            script_url: '@Url.Content("~/Scripts/tinymce/tiny_mce.js")',
            theme: "advanced",
            
            height: "300",
            width: "auto",
            verify_html : false,
            plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",
            
            // Theme options
            theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft,codehighlighting,netadvimage",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",
            theme_advanced_resizing : false,
            
            // Example content CSS (should be your site CSS)
            content_css : "@Url.Content("~/Scripts/tinymce/css/content.css")",
            convert_urls : false,
            
            // Drop lists for link/image/media/template dialogs
            template_external_list_url : "lists/template_list.js",
            external_link_list_url : "lists/link_list.js",
            external_image_list_url : "lists/image_list.js",
            media_external_list_url : "lists/media_list.js"

        });

      });

    })();

</script>

@Html.TextArea(string.Empty, /* Name suffix */
    ViewData.TemplateInfo.FormattedModelValue /* Initial value */
)




Geladen in der WidgetView wird es so:


View:


@model Models.Core.nContentPostModel
@{
    Models.Backend.Content.CategoryModel CM = new Models.Backend.Content.CategoryModel();
 
    }
<style type="text/css">

    table.tblCreateContent {
    
    width:100%;

    
    
    }

        table.tblCreateContent td:first-child {
            width:50%;
            min-height: 30px;
            padding:1px;
            margin:1px;
            vertical-align:top;
            text-align:left;
        }
             table.tblCreateContent tr {
        
        background-color:transparent;

        
        
        }
        table.tblCreateContent tr:hover {
        
        background-color:#e6dede;

        
        
        }
   table.tblCreateContent td:last-child {
            width:50%;
            padding:1px;
             min-height: 30px;
            margin:1px;
            vertical-align:top;
            text-align:right;
        }

        table.tblCreateContent td input[type] {
        
        height:20px;
        
        }
        table.tblCreateContent td input, table.tblCreateContent td select, table.tblCreateContent td textarea{
            width:800px;
        }
        table.tblCreateContent td textarea {
        
        height:150px;

        }
    a.create-content-help {
    
   cursor:help;
    text-decoration:dotted;
    
    }

</style> 


<script>


    $(function () {


        $('.create-content-help').each(function () {
            try {
                $(this).click(function () {



                    var x = $(this).closest("tr");
                    var t = (x[0].title);
                    $('#help-dialog-create-content').html(t);

                    $('#help-dialog-create-content').dialog({

                        width: 600,
                        height: 'auto',
                        resizable: false,
                        title: "Inhalte erstellen - Hilfe",
                        modal: true

                    });

                    $('#help-dialog-create-content').dialog('open');

                });
            }
 catch(e){}


        });


    });

</script>
<div id="help-dialog-create-content" style="font-size:10px !important;"></div>
 <table class="tblCreateContent">

    <tr title="Vergeben Sie hier einen Aussagekräftigen Titel. Achten Sie darauf, dass dieser für Suchmaschienen interessant wird wenn der Titel auch im Haupttext, den Suchstichworten, dem Vorschautext und der Meta-Beschreibung vorkommt.">
        <td>
            <b>Titel:</b><br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a>
        </td>
        <td>

            @Html.TextBoxFor(m => m.Title)

        </td>

    </tr>
        <tr title="Geben Sie hier den Vorschautext an. Dieser bietet Besuchern einen groben Vorgeschmack auf den Hauptinhalt.">
        <td>
            <b>Vorschau Text:</b><br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a>
        </td>
        <td>
            @Html.TextAreaFor(m=>m.PreviewText)

        </td>



    </tr>
    <tr title="Geben Sie hier den Inhalt ein. Dieser wird bei der Detailansicht angezeigt.">

        <td>
            <b>Text:</b><br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a>
        </td>

        <td>

            @Html.EditorFor(m => m.LongText)

        </td>
    </tr>
    <tr title="Wählen Sie hier die Kategorie für den Inhalt oder legen Sie eine an."><td>

        <b>

            Kategorie:
            
        </b><br />
        <a href="javascript: new widgetAction('widget:NEW_CATEGORY:open')">Neue Kategorie anlegen</a>
        <br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a>
        </td>

        <td>

         @Html.DropDownListFor(m => m.CategoryID, new SelectList(CM.CategoryList(),"id","shortName"))

        </td>


    </tr>

    <tr title="Geben Sie hier die Suchmaschienen Beschreibung ein.">
        <td>

            <b>Meta Beschreibung (Für Suchmaschienen):</b>
            <br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a>
        </td>
        <td>
            @Html.TextAreaFor(m=>m.MetaDescription)

        </td>
    </tr>

    <tr title="Geben Sie hier Stichworte für die Suchmaschienen ein. Trennen Sie diese mit einem Komma.">

        <td><b>Meta Stichworte (Suchstichworte)</b><br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a></td>
        <td>@Html.TextAreaFor(m => m.MetaKeyWords)</td>
    </tr>

    <tr title="Wenn diese Box markiert ist, wird der Beitrag im Frontend sofort nach dem Speichern sichtbar">
        <td><b>Beitrag direkt freigeben?</b><br />
            <a href="javascript:void(0)" class="create-content-help">Hilfe?</a></td>
        <td>

            @Html.CheckBoxFor(m => m.Locked)


        </td>

    </tr>

    <tr>
        <td title="Datei Anhänge sind Bilder, Videos oder Downloads. Sie können den Anhängen auch Rollen geben, wie etwa in Newsbeiträgen INDEX BILD  als Anzeige-Bild für den Newsbeitrag."><b>Dateianhänge:</b></td>
        <td>

            <div class="ui-widget">
	<div class="ui-state-highlight ui-corner-all" style="padding: 10px;">
		<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
		<strong>Noch nicht möglich:</strong> Sie müssen den Inhalt erst speichern, ehe Sie Anhänge registrieren können.</p>
	</div>
</div>
        </td>


    </tr>

</table>




Model:



public class nContentPostModel
    {
    
        public int ReferenceID {
            get;
            set;
        
        
        }
        
        //Eigenschaften
        /// <summary>
        /// Returns the ID of the Content
        /// </summary>
        /// 
        public int ID
        {
            get;
            set;
        }



        /// <summary>
        /// Returns the Title of the Content
        /// </summary>
        /// 
        [Required]
        public string Title
        {

            get;
            set;

        }
        /// <summary>
        /// Returns the Content Type of the Content
        /// </summary>
        /// 
        [Required]
        public string ContentType
        {

            get;
            set;

        }
        /// <summary>
        /// Returns the Category object
        /// </summary>
        /// 
        [Required]
        public object CategoryID
        {
            get;
            set;

        }

      
    
        /// <summary>
        /// Returns the Creators PK ID
        /// </summary>
        public object CreatorPKID
        {


            get;
            set;


        }

        /// <summary>
        /// Returns the Username of the Creator
        /// </summary>
        public string CreatorName
        {

            get;
            set;


        }

        /// <summary>
        /// Returns Boolean of the Locked Status of the Content
        /// </summary>
        /// 
        [Required]
        
        public bool Locked
        {

            get;
            set;

        }
        /// <summary>
        /// Returns the COMMA SEPERATED Meta-Keywords
        /// </summary>
        /// 
         [DataType(DataType.Text)]
        public string MetaKeyWords
        {

            get;
            set;


        }
        /// <summary>
        /// Returns the MetaDescription
        /// </summary>
        /// 
        [MaxLength(250)]
        [DataType(DataType.Text)]
        public string MetaDescription
        {

            get;
            set;


        }
        /// <summary>
        /// Returns the PreviewText
        /// </summary>
        /// 
        [Required]
        [DataType(DataType.Text)]
        [MaxLength(400)]
        public string PreviewText
        {

            get;
            set;


        }
        /// <summary>
        /// Returns the Content Long Text
        /// </summary>
        ///
        [Required]
        [UIHint("tinymce_jquery_full"), AllowHtml]
        public string LongText
        {

            get;
            set;


        }
    
    }


Ich weiß langsam keinen Rat mehr woran das liegen kann. Nach dem Der Fehler aufgetreten ist muss ich die Seite neuladen, da die Grids(Benutze dafür Flexigrid) nicht mehr geladen werden und auch jqueryUI Tabs nicht mehr funktionieren. Komischer Weise funktioniert das Öffnen und das Schließen noch der "Fenster".


Hat wer einen Tip für mich? Es passiert nur wenn ich ein Widget lade wo der Editor eingebunden ist.


Viele Grüße,


b0b0

Thema: Routing Probleme in Portable Areas
Am im Forum: Web-Technologien

Erledigt -

sorry für die späte Rückmeldung.


Deine Routingbeispiele waren perfekt und dank den letzten VS Stunden (Vernetzte System - Switch Routing Tabellen ;) ) in der BS kam mir heut erst die zündene Idee.

Und die Lösung war einfach^^

Die "Adressierung" war falsch.

Undzwar dank der Erweiterung RouteDebugger (die ich euch nicht vorenthalten möchte, ist für NuGet Package Manager) kam ich darauf, dass der aufgerufene Namespace nicht stimmt.


Ich hatte im news Controller den namespace "Module.News" doch es wurde probiert den Projektstandartnamespace aufzurufen unter dessen Namen logischer Weise der News Controller nicht zu finden war.


Also für alle die neu im Routing sind wie ich das Toll hier hilft enorm:

http://nuget.org/packages/routedebugger


Kleine Info, das Tutorial auf der Herstellerseite ist veraltet. Einfach installieren wie dort beschrieben und hinterher nicht vergessen die DLL wieder zu löschen wenn ihr fertig seid;) der zeigt die debug info dauerhaft an solang die DLL vorhanden ist.

Thema: Routing Probleme in Portable Areas
Am im Forum: Web-Technologien

sorry für die späte rückmeldung ;)

Meintest du diesen Article? blogs.msdn.com/b/dparys/archive/2010/09/13/routen_2d00_in_2d00_aspnet_2d00_mvc_2d00_definieren.aspx

da es eine Portable Area ist sehe ich auf MVCcontrib -> Docu, dass ich den AreaName vorne dran hängen muss.


Ich habe daher jetzt folgendes probiert:
EDIT: Kleinen Denkfehler gefunden. Route hieß immer noch /{page}, habe ich geändert, geht leider trotzdem noch nicht :-(


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using nCMSNET.ViewEngine;
using MvcContrib.PortableAreas;
using MvcContrib;
namespace nCMS_NET.News
{
    public class NewsRegistration:PortableAreaRegistration
    {   
        public override void RegisterArea(System.Web.Mvc.AreaRegistrationContext context, IApplicationBus bus)
        {
            /*context.MapRoute(
                "News_Default",
                 AreaName +"{controller}/{action}/{id}/{category}/{subcategory}",
                new { controller = "News", action = "Archive", id=UrlParameter.Optional, category =  UrlParameter.Optional, subcategory=UrlParameter.Optional }

                );
          */
             context.MapRoute(
              "News_Show_Paging",
               AreaName +"{controller}/{action}/{id}/{p}",
              new { controller = "News", action = "Show", id="", p=""}

              );

            /*
            context.MapRoute(
            "News_Show",
             AreaName + "{controller}/{action}/{id}",
            new { controller = "News", action = "Show", id = "" },
            new string[] { "MvcContrib.PortableAreas" }

            );*/
            RegisterAreaEmbeddedResources();
        }

        public override string AreaName
        {
            get { return "News"; }
        }
    }
}

Funktioniert bisher leider immer noch nicht.

Was mich wundert...es ist nicht die ASP.net 404 Seite.... ich glaub die vom IIS:

http://beta.networkfreaks.de/News/Show/TESTBEITRAG_2/2

Wie gesagt ohne die page gehts, obwohl ich nur eine Route drinnen habe:

http://beta.networkfreaks.de/News/Show/TESTBEITRAG_2


Hier der Code der kompletten Action des Controllers:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using nCMS_NET.nModules;
using Module.News.Models;
using nCMS_NET.CORE.SqlHelper;
using System.Data.SqlClient;
using nCMS_NET;
using nCMS_NET.Pagination;
using nCMS_NET.MemberShip;
using nCMS_NET.CORE.Permissions;
using nCMS_NET.CORE.Captcha;
using nCMS_NET.CORE.GlobalSettings;
namespace Module.News
{
    public class NewsController : Controller
    {

  
       


       
        [HttpGet]
        public ActionResult Show(string id="", string p ="") {

            int page = 0;
            int.TryParse(p, out page);

            if (String.IsNullOrEmpty(id)) throw new Exception("ID IS NULL!");
            SqlHelper Sql = new SqlHelper();
            Sql.SysConnect();
            if (page < 1) page = 1;
            SqlParameter[] P = new SqlParameter[] { new SqlParameter("@seo", id) };
            
            SqlDataReader R = Sql.SysReader("SELECT id FROM "+ new nCMS_NET.CORE.ThisApplication.ThisApplication().getSqlPrefix +"Content WHERE SEOname=@seo", P);
            List<nCMS_NET.Content.nContent> Entry = new List<nCMS_NET.Content.nContent>();
            List<nCMS_NET.Content.nContent> Comments = new List<nCMS_NET.Content.nContent>();
            
            if (!R.HasRows) return RedirectToActionPermanent("Code/404", "Error");
            else {

                R.Read();
                int idd = ((int)R["id"]);
                nCMS_NET.Content.ContentManagement.GetContent G = new nCMS_NET.Content.ContentManagement.GetContent(idd);
                nCMS_NET.Content.ContentManagement.GetContent C = new nCMS_NET.Content.ContentManagement.GetContent(new string[] { "eNewsComment" },null,null,"{prefix}Content.cDate","DESC",false,page,10,idd);
                                    
                Entry = G.getList();
                Comments = C.getList();
                if (Entry.Count == 0) RedirectToActionPermanent("Code/404", "Error");
                Entry[0].GenerateLink();
                if (Entry[0].ContentType != "eNews") RedirectToActionPermanent(Entry[0].TargetAction, Entry[0].TargetController);
                nPagingCollection pages = new nPagingCollection(C.TotalRows, 10);
                ViewData["TotalRows"] = C.TotalRows;
                ViewData["Show"] = Comments.Count;
                ViewData["Pages"] = pages;
                ViewData["Page"] = page;
            }

            R.Close();
            Sql.SysDisconnect();
            ViewData["Entry"] = Entry[0];
            ViewData["Comments"] = Comments;
           
            return View();
        }


        //
        // GET: /News/
        public ActionResult Index()
        {



            return RedirectToAction("Archive");
        }
        public ActionResult Archive(int id=1, string category = "", string subcategory = "")
        {



            int page = id;
            if (id < 1) page = 1;



            nCMS_NET.CORE.GlobalSettings.GlobalSettings G = new nCMS_NET.CORE.GlobalSettings.GlobalSettings();
            int max = 0;
            if (String.IsNullOrEmpty(G.Read("GLOBAL_NEWS_MAX_ENTRIES")))
            {

                G.Write("GLOBAL_NEWS_MAX_ENTRIES", "10");

            }
            max = Convert.ToInt32(G.Read("GLOBAL_NEWS_MAX_ENTRIES"));




            nCMS_NET.Content.ContentManagement.GetContent News = new nCMS_NET.Content.ContentManagement.GetContent(new string[] { 
    "eNews"
    
    }, null, null, "{prefix}Content.cDate", "DESC", false, page, max);


            List<nCMS_NET.Content.nContent> N = News.getList();
            nPagingCollection pages = new nPagingCollection(News.TotalRows, max);
            ViewData["TotalRows"] = News.TotalRows;
            ViewData["News"] = N;
            ViewData["Show"] = N.Count;
            ViewData["Pages"] = pages;
            ViewData["Page"] = page;

     
 
 
            return View();
}
    }
}



Ich hoffe ich stell mich gerade nich allzu unklug an, aber dieses Routing möchte irgendwie nicht in meinen Kopf :-/

Thema: Routing Probleme in Portable Areas
Am im Forum: Web-Technologien

Hi, danke für die schnelle Antwort.

Ich durchsuche grad einige MVC Tutorials....


Ich habe jetzt erstmal alle Routings in der PortableArea auskommentiert um nur News_Show zu testen mit Seitenzahlen.


Folgende Varianten hatte ich aus einen Tutorials (Codeproject glaub ich wars)

Leider immer noch 404:



       context.MapRoute(
              "News_Show_Paging",
               AreaName +"{controller}/{action}/{id}/{page}",
              new { controller = "News", action = "Show"}

              );

- ohne id und page genauer zu definieren




       context.MapRoute(
              "News_Show_Paging",
               AreaName +"{controller}/{action}/{id}/{page}",
              new { controller = "News", action = "Show", id="", page=0}

              );



- ebenfalls kein Erfolg




       context.MapRoute(
              "News_Show_Paging",
               AreaName +"{controller}/{action}/{id}/{page}",
              new { controller = "News", action = "Show", id="*", page="*"}

              );





Ich denke ich brauch im Sachen Routing ein genaues Tutorial oder sowas. Ich bin mir nicht mal sicher, ob eine Variante richtig war :(

Thema: Routing Probleme in Portable Areas
Am im Forum: Web-Technologien

Hi!

Ich stehe vor folgendem Problem:

Wenn ich die URL News/Show/<Topicname> Aufrufe funktioniert alles. Möchte man jedoch in den Kommentaren die Seite (von 1 zu 2 zb) wechseln kommt bei News/Show/<Topicname>/1 eine 404 Seite.


Ich weiß leider nicht wo der Wurm drin ist.

Anbei das Script zum Registrieren der PortableArea:


public override void RegisterArea(System.Web.Mvc.AreaRegistrationContext context, IApplicationBus bus)
        {
            context.MapRoute(
                "News_Default",
                 AreaName +"{controller}/{action}/{id}/{category}/{subcategory}",
                new { controller = "News", action = "Archive", id=UrlParameter.Optional, category =  UrlParameter.Optional, subcategory=UrlParameter.Optional }

                );
            context.MapRoute(
              "News_Show",
               AreaName + "{controller}/{action}/{id}",
              new { controller = "News", action = "Show", id = UrlParameter.Optional},
              new string[] { "MvcContrib.PortableAreas" }

              );
            context.MapRoute(
              "News_Show_Paging",
               AreaName +"{controller}/{action}/{id}/{page}",
              new { controller = "News", action = "Show", id = UrlParameter.Optional, page = UrlParameter.Optional},
              new string[] { "MvcContrib.PortableAreas" }

              );
            RegisterAreaEmbeddedResources();
        }


Und so ist im news controller die Funktion Show aufgebaut:




public ActionResult Show(string id, int page = 1) {
//.....
ViewBag.P = page;
return View();
}




Warum erkennt er int page nicht?

Ich finde leider den Fehler nicht :(

Thema: Kein Prozess am Ende der Pipe seit Server crash
Am im Forum: Datentechnologien

Hi, hab ein Backup vom hoster bekommen und aufgespielt. Alles wieder bestens :-) Danke euch

Thema: Kein Prozess am Ende der Pipe seit Server crash
Am im Forum: Datentechnologien

gnaf...ich glaube ich hab den fehler....gerade die wichtigste datenbank die meiner webseite.... ist beschädigt...ich dachte mir gleich, dass bei sovielen einträgen 3mb niemals hinkommen könnte... alle tabellen fehlen :( SQL Server geht aber wieder....die beta umgebung ist da...samt inhalte... son mist :(

Thema: Kein Prozess am Ende der Pipe seit Server crash
Am im Forum: Datentechnologien

Hi, ganz übersehn...

danke :-)

deinstalll zieht sich etwas hin....hoffe mal danach gehts wieder :-)

Thema: Kein Prozess am Ende der Pipe seit Server crash
Am im Forum: Datentechnologien

Danke.

Habe gehofft, um eine Neuinstallation rum zu kommen.

Bin mir jetzt nur nicht sicher, ob ich meine Datenbanken samt Inhalte verlieren würde.
Ich kann kein Backup Script starten, da ich auch übers MSSQL Server Management Studio (auf dem Server) nicht auf den Server komme.


Werden Datenbanken gelöscht bei einer Reperatur / Neuinstallation?

vg

b0b0

Thema: Kein Prozess am Ende der Pipe seit Server crash
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL2008 Express

Hi, seit einem Server Crash ist keine Verbindung mehr zum SQL Server von mir möglich.

Ich habe auf der ms Seite bereits alle beiden "Lösungsvorschläge" probiert und dies leider ohne erfolg.

Hier erstmal die Fehlermeldung:

Fehler
Es kann keine Verbindung mit 'S15866430\NFSQLSERVER1' hergestellt werden.

------------------------------
ZUSÄTZLICHE INFORMATIONEN:

Es konnte eine Verbindung mit dem Server hergestellt werden, doch während des Handshakes vor der Anmeldung trat ein Fehler auf. (provider: Named Pipes-Provider, error: 0 - Kein Prozess ist am anderen Ende der Pipe.) (Microsoft SQL Server, Fehler: 233)

Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476

------------------------------
SCHALTFLÄCHEN:

OK
------------------------------


OS: Windows Server 2008 R2

Hoffe mir kann jemand helfen :-)


vg

b0b0

Thema: MVC3 - Controller nimmt Parameter nicht an
Am im Forum: Web-Technologien

Danke funktioniert gut....also kleine rückfrage zur not google mich nochmal durch.....der datentyp vom parameter ist egal, der muss nur ID heißen oder?

Thema: MVC3 - Controller nimmt Parameter nicht an
Am im Forum: Web-Technologien

Hi!

ich möchte gerne dass man per URL Aufruf zu Home/Index/{Seitennr} die Seiten der letzten Beiträge durchblättern kann.


Hier mein Code


    [HttpGet]
        [ValidateInput(false)]
        public ActionResult Index(string strpage = "1")
        {
            int page = 1;
            if (!int.TryParse(strpage, out page)) page = 1;



            nCMS_NET.CORE.GlobalSettings.GlobalSettings G = new CORE.GlobalSettings.GlobalSettings();
            int max = 0;
            if (String.IsNullOrEmpty(G.Read("GLOBAL_INDEX_MAX_ENTRIES"))) {

                G.Write("GLOBAL_INDEX_MAX_ENTRIES", "10");
            
            }
            max = Convert.ToInt32(G.Read("GLOBAL_INDEX_MAX_ENTRIES"));
            max = 1;
            nCMS_NET.Content.ContentManagement.GetContent News = new nCMS_NET.Content.ContentManagement.GetContent(new string[] { 
    "eNews",
    "eArticle"
    
    },null,null,max);

               List<nCMS_NET.Content.ContentManagement.PageInitializier> Pages =    new nCMS_NET.Content.ContentManagement().GetPages(News.TotalRows, 1212, 1111, max);

            if (page > 1) {

             News = new nCMS_NET.Content.ContentManagement.GetContent(new string[] { 
    "eNews",
    "eArticle"
    
    }, null, null, max,"{prefix}Content.cDate","DESC",false,Pages[(page-1)].PageStart);
            
            }

            List<nCMS_NET.Content.nContent> N = News.getList();
      
            ViewData["TotalRows"] = News.TotalRows;
            ViewData["News"] = N;
            ViewData["Show"] = N.Count;
            ViewData["Pages"] = Pages;
            ViewData["Page"] = page;

            return View();
        }


Soweit funktioniert es jedoch nur wenn ich strpage als QueryString aufrufe. Was mach ich falsch? Habe bereits gegooglet und nichts gefunden.


Wär nett wenn ihr mir vieleicht helfen könnt :)

Thema: [MVC3] Ein Attributargument muss ein constant-, ... eines Attributparametertyps ...
Am im Forum: Web-Technologien

Hi ich Kämpfe zurzeit mit folgender Fehlermeldung:

Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck eines Attributparametertyps sein.

Ich habe eine SQL Tabelle. In der Strings gespeichert sind. Ich nenne sie "Language". Ich erstelle somit mehrere Packs von Language Strings.

Die Idee ist damit mehrere Sprachen auswählen zu können.
Hier möchte ich aus meiner Language Klasse gerne Name="User Name" ändern.

Name soll den Wert der besagten Zeile haben. Leider klappt das nicht so einfach wie ichs mir erhofft habe.

  [Required]
        [Display (Name=new Language("_REGISTER_USERNAME","Register","deDE")]
        public string UserName { get; set; }

Gibt es einen Weg den "Name" irgendwie zu ändern?


Vg

b0b0