我正在根据下拉选择更改页面主题。在使用后面的代码编写用户控件之前,我在处理程序页面中的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成功。
但我在控制台中收到错误,无法加载文件“此文件名”,只有协议方案支持交叉源请求。
答案 0 :(得分:0)
file://
本地存在跨域原因问题的首先与浏览器相关,您可以按照此处的说明进行操作Bypass CORS Errors When Testing APIs Locally
第二次:使用异步请求更改主题不会影响,直到您刷新页面(进行回发)。
但还有另一种解决方法:您只需使用javascript更改css文件的网址即可立即加载新主题