Как я могу вернуть разметку бритвы из помощника?

Недавно я написал библиотеку javascript, чтобы уменьшить количество копипастов, которые я делал. Я чувствую, что каждый раз, когда я копирую и вставляю код, есть возможность сделать его универсальным, чтобы я мог использовать его повторно.

Создав свою библиотеку, я хотел использовать ее в представлении .cshtml. Итак, я использовал ссылку на скрипт и вуала, он был доступен. Однако IntelliSense в Visual Studio 2010 совсем не помогал. На самом деле все, что он показывал, это обычные параметры javascript.

Я решил заставить IntelliSense работать с моей библиотекой. После поиска сверху и снизу я понял это (спасибо @SLaks). Связанный ответ на вопрос js IntelliSense заключался в том, чтобы окружить ссылку скрипта бритвой @if(false){<script>}, чтобы IntelliSense работал со связанным скриптом в этом представлении.

Итак, я подумал,

Должны ли все ссылки на сценарии в Visual Studio 2010 для бритвы быть окружены этой разметкой?

@if (false)
{
 <script src="/Scripts/r.js" type="text/javascript"></script>
}else{
 <script src="@Url.Content("~/Scripts/r.js")" type="text/javascript"></script>
}

Это выглядит хорошо для меня, поэтому я начал включать его только для того, чтобы обнаружить, что снова копировал вставку. Я подумал, что мог бы сделать «простого» помощника, может быть, @Html.Script(source). К сожалению, я не знал, как вернуть бритвенную разметку от помощника.

Я пробовал это:

    public static void Script(
this HtmlHelper html, string source)
    {
        html.ViewContext.Writer.Write("@if(false){}else{}");
    }

Но он просто выводит строку на экран :(

Как я могу вернуть разметку бритвы из помощника? ИЛИ есть ли другой процесс, который я могу использовать, чтобы сделать это многоразовым?


person Travis J    schedule 16.05.2012    source источник
comment
Вам не нужно возвращать разметку Razor, просто строку — тег скрипта!   -  person asawyer    schedule 17.05.2012
comment
@asawyer - Но тогда это не вызовет обходной путь для IntelliSense.   -  person Travis J    schedule 17.05.2012
comment
Оооо, я вижу, о чем ты спрашиваешь. Нет. Это раздражающее ограничение для javascript intellisense Visual Studio, но это лучше, чем ничего.   -  person asawyer    schedule 17.05.2012
comment
@asawyer - На самом деле, я думаю, что у меня есть решение этой проблемы :). Я опубликую это как свой ответ, если он сработает, поэтому, надеюсь, другие люди не будут биться головой о ту же стену, в которую я ударился :). Он включает в себя использование частичного представления для динамического включения сценария.   -  person Travis J    schedule 17.05.2012
comment
@asawyer - Вздох, я получил частичное представление для работы (вызванное помощником), и, надеюсь, я смогу повторно использовать код где-нибудь еще, потому что он не дает того, на что я надеялся. Хотя связанный сценарий доступен, IntelliSense отсутствует, поскольку сценарий доступен только во время выполнения. Грустное лицо.   -  person Travis J    schedule 17.05.2012


Ответы (1)


Вы не можете визуализировать разметку Razor, созданную в помощнике. Механизм бритвы сначала анализирует код бритвы, а затем выполняет вспомогательные функции. Результаты помощника можно использовать только для создания html-разметки.

person Alex    schedule 17.05.2012