그것은이 상자에서 지원되지 않는 것 같습니다, 그러나 여기에서 나는 테마 구현하기 위해 무슨 짓을했는지 :
먼저, 내 프로젝트에 App_Themes 폴더를 추가, 테마의 부부를 설정
나는 다음 가능한 한 가까운 웹 양식 프로필 공급자를 시도하고 모방하기로 결정하고, Web.config의에 프로필 속성을 추가 : 그래서
<profile>
<properties>
<add name="ThemePreference" type="string" defaultValue="Blue" />
</properties>
</profile>
을, 기본적으로 내가하고 싶었던 것은 할 수 있었다 appropr에서 다른 CSS를로드하십시오. 주제가 바뀌면 테마 폴더를 만들 수 있습니다. 없음/Site.css 경우를
이
<link href="@Url.Theme("~/Content/Site.css")" rel="stylesheet" type="text/css" />
이 후 적절한 테마 Site.css로드하고 ~/내용으로 후퇴해야한다 : 나는 쓸 수 있도록 내가 UrlHelper 클래스에 부착 된 도우미 메서드를 구현하여 이런 짓을 파일을 찾았습니다. 단순히 기본 값을 가져옵니다 코드의 버전에서 지금
public static class UrlHelpers
{
public static string Theme(this UrlHelper url, string u)
{
if (u.StartsWith("~")) u = u.TrimStart('~');
SettingsProperty settingsProperty = ProfileBase.Properties["ThemePreference"];
return url.Content("~/App_Themes/"+settingsProperty.DefaultValue + u);
}
}
, 그래서 당신은 약간의 코드를 조정할 필요합니다 :
도우미는 아주 간단합니다. 그러나 알 수 있듯이이 파일은 css 파일에 국한되지 않고 .master 파일에서 이미지까지 모두 작동합니다.
업데이트 - 그렇지 않으면
public static class UrlHelpers
{
public static string Theme(this UrlHelper url, string u)
{
if (u.StartsWith("~")) u = u.TrimStart('~');
object currentThemeName = null;
if (url.RequestContext.HttpContext.Session != null)
{
currentThemeName = url.RequestContext.HttpContext.Session["ThemePreference"];
}
return currentThemeName != null ? url.Content(String.Format("~/App_Themes/{0}{1}", currentThemeName, u)) : url.Content("~"+u);
}
}
그것이 ThemePreference 세션 값을 발견하고 요청 내용에 대한 적절한 URL을 returnes 확인이 방법의 리턴 라인, 대신 프로필의 그것을 세션을 사용하여 단순히 App_Theme 접두사없이 요청 된대로 콘텐츠를 반환합니다. 드롭 다운 postmethod에 대한 controlleraction에서
, 당신은 간단 할 거라고 :
Session.Add("ThemePreference", whateverValueYouGotFromDropdown);
업데이트를 일부 조정하고 고정으로
,이 트릭을 할해야을 종료합니다. 내가 URL의 테마 이름을 기반으로 테마를 변경해야 할 것 같다 당신의 아이디어에 따라 경찰 :
은 그것이 완전한 연습 :
@Nilsen 아니더라도 일부를 도움이되기를 바랍니다. 테마를 선택하면 뷰 데이터에 테마 이름을 설정하고 뷰 파일에서이 값을 사용하여 테마가 변경 될 수 있도록 페이지에서 드롭 다운을 사용할 수 없습니다. 이건 좋은 연습 이니?. 내 프로젝트는 URL에 테마 이름을 갖고 싶지 않기 때문에 .. – Saravanan
글쎄, 실제 App_Themes URL에 대한 과정을 제외하고는 내 코드의 URL에 대한 참조가 없지만 출처를 조사하지 않는 한 사용자에게 URL이 제공되지 않습니다. 세션에 테마 이름의 값을 저장하거나 로그인 한 사용자 (인증하는 경우)의 일부 속성에 값을 저장 한 다음 거기에서 검색 할 수 있습니다. 여기에있는 키 코드는 UrlHelpers 클래스에서 settingsProperty를 검색합니다. 대신 세션을 사용하도록 쉽게 변경할 수 있습니다. 내 대답을 예제로 업데이트하겠습니다. –
거기 가서. 마지막으로 업데이트 된 코드는 테스트를 실행하지 않고 작성되었지만 예상대로 작동해야합니다. –