.NET MVC: Jak zaimplementować inny wygląd strony na użytkownika?

Brakuje mi tutaj pomysłów. Może możesz mi doradzić, jakiego wzoru lub metod użyć.

Użytkownik powinien mieć możliwość zalogowania się i zmianytylko wygląd dla swojego profilu. Różnica (AFAIK) z personalizacją polega na tym, że spersonalizowany układ jest widoczny tylko dla edytora (samego siebie). Myślę, że różnica między skórowaniem polega na tym, że skórki są predefiniowane, ale użytkownicy powinni mieć możliwość samodzielnej zmiany ustawień.

Muszę być w stanie wyświetlić dostosowany układ wszystkim, którzy odwiedzają stronę autora.

Dobrym rozwiązaniem byłoby zachowanie informacji o układzie w tabeli DB. Powinien też być buforowany. Domyślam się, że ładuję DB i używam go w CSS.

Dzięki

Edytować:

OK zrobiłem teraz trochę badań. Wpadł na ten pomysł.

W widoku pobierz userId (typ Guid) z bazy danych i ustaw go na ViewData: ViewData ["userId"] = profile.userId;

Ten widok używa następującego MasterPage o nazwie „Profile.Master” i prowadzi do dynamicznego pliku CSS:

    <link href="<%= Url.Action("Style", "Profile", 
        ViewData["userId"]) %>" rel="stylesheet" type="text/css" />
</head>

W ProfileController pobierz dane CSS z DB i zwróć je do dynamicznego widoku CSS:

public ActionResult Style(Guid userId)
{
    var styles = (from s in Db.UserStyleSet.OfType<UserStyle>()
                  where s.aspnet_Users.UserId == userId
                  select s);

    return View("Style", styles);
}

Problem polega na tym, że UserId nigdy nie jest przekazywany do dynamicznego linku CSS:

Słownik parametrów zawiera wpis zerowy dla parametru „userId” typu niezawierającego wartości null „System.Guid” dla metody „System.Web.Mvc.ActionResult Style (System.Guid)” w „Project.Controllers.ProfileController”.

Wszelkie porady są mile widziane, dziękuję.

questionAnswers(4)

yourAnswerToTheQuestion