使用Web方法更改主题

时间:2016-05-18 11:19:08

标签: jquery asp.net

我正在根据下拉选择更改页面主题。在使用后面的代码编写用户控件之前,我在处理程序页面中的web方法和通过ajax调用放入的相同代码我调用此方法。但主题并没有改变页面。

以下是我的代码:

    [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;

    }

这里我传递主题名称。 以下是我的jquery代码:

 $(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;
            }
        });
    }

工作正常但只需要刷新页面。

我在div中有html内容但是当我使用下面的代码时:

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

此代码在ajax成功。

但我在控制台中收到错误,无法加载文件“此文件名”,只有协议方案支持交叉源请求。

1 个答案:

答案 0 :(得分:0)

所有在file://本地存在跨域原因问题的

首先与浏览器相关,您可以按照此处的说明进行操作Bypass CORS Errors When Testing APIs Locally

第二次:使用异步请求更改主题不会影响,直到您刷新页面(进行回发)。

但还有另一种解决方法:您只需使用javascript更改css文件的网址即可立即加载新主题