이 질문의 전체 텍스트가 화면에 어떤 도움 hereMVC 4 테마 전환
감사 사용할 수 있습니다 - 원래의 게시물은 다음과 같습니다
그래서 나는 MvcMusicStore을 다운로드 완성을 발사 계획. 뷰 엔진을 확장하고 jquery 플러그인을 사용하는 것에 대한 모든 기사를 읽었지만 링크가 클릭되면 CSS 파일 경로를 변경하는 것보다 간단 할 수 있다고 생각하고 싶었습니다. 주로 내가 완전히 이해하지 못했던 그대로 코드를 복사하고 싶지 않았기 때문입니다. 저는 MVC를 처음 접했습니다. HomeController.cs으로내가 추가 : 나는 다음 사이트의 두 복사본을 생성
public class ThemeModel
{
public static string GetSetThemeCookie(string theme)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("userTheme");
string rv = "Blue";
if (theme != null)
rv = theme;
else
{
if (cookie != null)
rv = cookie["themeName"];
else
rv = "Blue";
}
cookie = new HttpCookie("userTheme");
HttpContext.Current.Response.Cookies.Remove("userTheme");
cookie.Expires = DateTime.Now.AddYears(100);
cookie["themeName"] = rv;
HttpContext.Current.Response.SetCookie(cookie);
return rv;
}
}
: 모델에
public ActionResult Theme(string themeName)
{
ViewBag.Theme = ThemeModel.GetSetThemeCookie(themeName);
return View();
}
내가이 클래스를 추가
그래서 이것은 내가 무슨 짓을 .css, 배경색과 font-family 만 변경하고 내 링크 태그를 생성하는보기.
<link href="@Url.Content(string.Format("~/Content/{0}.css", ViewBag.Theme))" rel="stylesheet" type="text/css" />
마지막으로 이러한 변경 사항을 _Layout.cshtml에 적용했습니다.
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@if (ViewBag.Theme == null) {Html.RenderAction("Theme", "Home");}
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"
type="text/javascript"></script>
</head>
<body>
<div id="header">
<h1><a href="/">ASP.NET MVC MUSIC STORE</a></h1>
<ul id="navlist">
<li class="first"><a href="@Url.Content("~")" id="current">Home</a></li>
<li><a href="@Url.Content("~/Store/")">Store</a></li>
<li>@{Html.RenderAction("CartSummary", "ShoppingCart");}</li>
<li><a href="@Url.Content("~/StoreManager/")">Admin</a></li>
</ul>
</div>
@{Html.RenderAction("GenreMenu", "Store");}
<div id="main">
@RenderBody()
</div>
<div id="footer">
Themes: @Ajax.ActionLink("Coral", "Theme", "Home", new { themeName = "Coral" }, null, new { @style = "color : coral"})
@Ajax.ActionLink("Blue", "Theme", "Home", new { themeName = "Blue" }, null, new { @style = "color : blue;"})
</div>
</body>
</html>
앱을 실행하면 일반 레이아웃이 두 번 렌더링됩니다. 일단 장르 메뉴가 왼쪽에 렌더링되고 몸에는 아무것도 표시되지 않습니다. 그리고 다시 상위 5 개 앨범으로. 충분한 담당자가 없어서 이미지를 게시 할 수 없습니다.
내 산호초 링크를 클릭하면 테마가 바뀌고 상위 5 개 앨범없이 설정됩니다.
_Layout.cshtml :
그래서 여기에 좀 더 읽은 후 나는이 시도
@{Html.RenderAction("Theme", "Home");}
HomeController.cs
public ActionResult Theme(string themeName)
{
ViewBag.Theme = ThemeModel.GetSetThemeCookie(themeName);
return PartialView();
}
하지만를이 중복 렌더링을 중지하더라도 테마 링크를 클릭하면 색상이 바뀌지 만 페이지에는 아무 것도 표시되지 않습니다.
지금은 정말 현혹되어 실제로 도움이 될 수 있습니다.
건배, .pd.