Недавно я написал библиотеку 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{}");
}
Но он просто выводит строку на экран :(
Как я могу вернуть разметку бритвы из помощника? ИЛИ есть ли другой процесс, который я могу использовать, чтобы сделать это многоразовым?