Program ASP.NET umożliwia dynamiczne generowanie kodu HTML za pomocą znaczników serwera (maszynki do golenia lub ASPX). Ale czy istnieje dobry sposób na generowanie treści * .js lub * .css w ten sam sposób, z wyjątkiem używania wbudowanego (osadzonego) kodu CSS/Javascript. W dzisiejszych czasach z technologiami takimi jak Ajax coraz więcej logiki przenosi się z serwera na stronę klienta w JavaScript. Byłoby wspaniale mieć możliwość dynamicznego generowania JS przy użyciu całej elastyczności, jaką ASP.NET zapewnia do generowania HTML.Dynamicznie generowany skrypt JavaScript, CSS w ASP.NET MVC
Na przykład, mój Javascript zawiera Knockout deklarację widok modelu z wstępnych danych ładowanych z serwerem podczas Javascript utylizacyjnych oraz dodatkowymi JS-funkcji, więc w moim HTML zamiast osadzone skrypty chcę mieć referencje skryptów takich jak to:
<script src="~/Scripts/[email protected]"></script>
Innym przykładem, gdzie deweloper może tego potrzebować, jest użycie CSS na podstawie profilu użytkownika. Informacje profilu użytkownika zawiera informacje o stylach (czcionki, kolory, nie tylko motyw), które muszą być przestrzegane podczas generowania CSS, więc moim zdaniem będzie mam coś takiego:
<link href="~/Styles/CurrentUserOverrides.css" rel="stylesheet" />
CurrentUserOverrides.css zostanie wygenerowany dynamicznie w oparciu na danych profilu uwierzytelnionego użytkownika.
Jak to zrobić, używając ASP.NET MVC? Chcę znaleźć rozwiązanie, które pozwoli mi to zrobić tak łatwo, jak tworzenie dynamicznego HTML przy użyciu ASP.NET, z poprawnie działającą intellisence i wszystkim innym co oferuje VS dla widoków ASP.NET.
Nie jestem pewien, czy rozumiem korzyści z tego, co próbujesz osiągnąć. Dlaczego chciałbyś wygenerować JavaScript, który byłby kontekstowy dla danej strony? –
Czy próbujesz spożywać contactId w ContactViewModel.js (i ContactId z 123 jest faktycznie renderowane przez twój model widoku)? – FiveTools
Tak, ContactViewModel.js musi zadeklarować obiekt z wartościami pól załadowanymi z bazy danych przez określoną ContactId –