Как я могу вернуть разметку бритвы от помощника?
Недавно я написал библиотеку 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{}");
}
Но он просто выводит строку на экран:(
Как я могу вернуть разметку бритвы от помощника? ИЛИ, есть ли другой процесс, который я могу использовать, чтобы сделать это повторно используемым?
1 ответ
Вы не можете сделать разметку Razor, созданную в помощнике. Механизм бритвы сначала анализирует код бритвы, затем выполняет вспомогательные функции. Результаты Helper могут быть использованы только для создания HTML-разметки.