Czy można umieścić JavaScript w częściowych widokach?

Pracuję w aplikacji internetowej, w której strona główna zawiera dwie części: stały blok, który jest zawsze widoczny, oraz blok informacyjny utworzony przez jeden z 3 częściowych widoków. Każdy z częściowych widoków pojawia się w wyniku żądania AJAX i jest ładowany tylko raz (po tym przełączeniu okien dostarcza jquery). Działa dobrze, ale napotykam jeden problem.

Kod html częściowych widoków zawiera funkcje js, które są również używane w stałym bloku iw bloku informacyjnym. Po załadowaniu strony funkcje te „widzą” się nawzajem i działają, ale resharper nie może znaleźć deklaracji funkcji i ostrzega mnie o tym. Nie mogę rozwiązać problemu, przenosząc je do zewnętrznego pliku js ze względu na składnię brzytwy, którą można znaleźć w ich kodzie.

Co mogę z tym zrobić?

Dzięki.

Aktualizacja:

W końcu postanowiłem rozwiązać problem oddzielający mój kod js od widoków. Nowe pytanie brzmiało, jak włączyć składnię brzytwy do plików js lub jaka jest akceptowalna alternatywa. Popularne rozwiązania, które znalazłem, wykorzystują zmienne globalne, atrybuty danych i te, które bardziej lubię - bibliotekę RazorJS autorstwa Johna Katsiotisa.

http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files

Mam nadzieję, że zadziała stabilnie i sprawi, że Resharper będzie szczęśliwy.

Twoje zdrowie!

Aktualizacja:

Po 3 latach przypomniałem sobie to pytanie i postanowiłem je zaktualizować zgodnie z moim doświadczeniem. Właściwie wolałbym teraz nie używać dodatkowych bibliotek. Zwłaszcza, jeśli nie jesteś jedynym członkiem zespołu projektowego… Znacznie lepiej jest, jeśli masz pewność, że we wszystkich bibliotekach jesteś wspierany przez twórcę i społeczność i można go łatwo zintegrować z IDE (jeśli na przykład używasz specjalnej składni) . Również wszyscy faceci z twojego zespołu powinni wiedzieć, jak to działa. Więc teraz zasugerowałbym wykonanie następnych rzeczy:

Przytrzymaj wszystkie JS w osobnych plikach. Wyizoluj to, jak możesz. Podaj dla niego zewnętrzny interfejs API.Wywołaj funkcje API z widoków.Podaj wszystkie adresy URL generowane przez Razor, wiadomości tekstowe, stałe jako parametr zasobu.

Na przykład:

plik js:

$.api.someInitFunction = function(resources){ ... }

Widok:

<script>
    $.api.someInitFunction({
        urls: { myAction: '@Url.Action("MyAction", "MyController")' },
        messages: { error: '@errorMessage' },
        consts: { myConst: @myIntConst }
    });
</script>

questionAnswers(5)

yourAnswerToTheQuestion