Как мога да върна маркировка за бръснач от помощник?

Наскоро написах библиотека на javascript, за да намаля количеството копиране, което правя. Чувствам, че всеки път, когато копирам код, има възможност да го направя общ, за да мога да го използвам повторно.

След като направих моята библиотека, исках да я използвам в изглед .cshtml. И така, използвах връзката към скрипта и vuala, тя беше налична. Въпреки това IntelliSense на Visual Studio 2010 изобщо не помагаше. Всъщност всичко, което показа, бяха обикновените опции на javascript.

Реших да накарам IntelliSense да работи с моята библиотека. След търсене на високо и ниско Разбрах го (Благодаря @SLaks). Свързаният отговор на въпрос на js IntelliSense беше връзката на скрипта да се огради с бръснач @if(false){<script>}, за да може IntelliSense да работи със свързания скрипт в този изглед.

И така, помислих си,

Трябва ли всички връзки към скриптове в Visual Studio 2010 за razor да бъдат заобиколени с това маркиране?

@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, произведено в помощник. Машината на бръснача първо анализира кода на бръснача, след което изпълнява помощници. Резултатите от Helper могат да се използват само за създаване на HTML маркиране.

person Alex    schedule 17.05.2012