2016-05-18 21 views
0

Ich ändere das Seitenthema basierend auf der Dropdown-Auswahl. Bevor es in Benutzersteuerung mit Code hinter geschrieben wurde, den gleichen Code, den ich Web-Methode in Handler-Seite und durch Ajax Anruf ich rufe diese Methode. aber das Thema ändert sich für die Seite nicht.Ändern des Designs mithilfe der Webmethode

Unten ist mein Code:

[WebMethod(MessageName = "GetAndSetTheme")] 
 
    public string GetAndSetTheme(string themeName) 
 
    { 
 
     string strValue = ""; 
 
     Configuration config = WebConfigurationManager.OpenWebConfiguration("~/"); 
 

 
     PagesSection pages = (PagesSection)config.GetSection("system.web/pages"); 
 

 
     pages.Theme = themeName; 
 

 
     if (!pages.SectionInformation.IsLocked) 
 
     { 
 

 
      config.Save(); 
 
      strValue = themeName; 
 
     } 
 
     return strValue; 
 

 
    }

Hier bin ich vorbei Thema Namen. Und unten ist meine jQuery-Code:

$(document).ready(function() { 
 
     $("#ddlTheme").change(function() { 
 
      debugger; 
 
      var themeValue = $('option:selected', this).text(); 
 
      if (this.val() > 0) { 
 
       SetTheme(themeValue); 
 
       $("#ddlTheme").attr('disabled', true); 
 
      } 
 
     }); 
 
    }); 
 
    function SetTheme(theme) 
 
    { 
 
     var param = JSON.stringify({ themeName: theme }); 
 
     var protocol = "http://localhost:1469/"; 
 
     var url = protocol + "CMSPages/WebService.asmx/GetAndSetTheme" 
 
     $.ajaxPrefilter(function (options, originalOptions, jqXHR) { 
 
      options.async = true; 
 
     }); 
 
     $.ajax({ 
 
      url: url, 
 
      type: 'POST', 
 
      dataType: 'json', 
 
      contentType: 'application/json', 
 
      data: param, 
 
      success: function (result) { 
 
       $("#ddlTheme").attr('disabled', false); 
 
       return true; 
 
      } 
 
     }); 
 
    }

Das funktioniert prima, aber müssen nur die Seite aktualisieren.

Ich habe HTML-Inhalt in div aber wenn ich diesen Code verwende, das ist unten:

$("#RefreshTheme").load('file:///D:/Newfolder/Header.html');

dieser Code innerhalb Ajax-Erfolg.

Aber ich bekomme Fehler in der Konsole, die Datei "dieser Dateiname" nicht laden kann, Cross Ursprungsanforderungen werden nur für Protokollschemata unterstützt.

Antwort

0

Erste aller mit Kreuz Ursprungsdomäne Problem lokal mit file:// ist Browser verwandt, und man kann es durch folgende Anweisungen zu überwinden hier Bypass CORS Errors When Testing APIs Locally

Zweite: das Thema Ändern async Anfrage verwendet, wird nicht, bis Sie beeinflussen Aktualisiere die Seite (mache ein Postback).

aber es gibt eine andere Abhilfe: Sie können einfach die URL Ihrer CSS-Dateien Javascript ändern verwenden und es wird das neue Thema sofort

+0

Hallo Mahmoud, Ihre zweite Lösung Ändern CSS-Dateien mit Hilfe von Javascript funktionierte für mich laden. Vielen Dank. Ich markiere es als Antwort. –

+0

@AkashKumar Froh zu helfen :) –

Verwandte Themen