Смешивание JavaScript с кодом C # с глубоким вложением. Попытка сделать внешний файл - PullRequest
1 голос
/ 25 марта 2012

У меня есть некоторые javascript и c # код внутри одного из моих взглядов, который глубоко вложен. Вот общая структура примерно так:

@if(something)
{
    <script type="text/javascript">
          @if(something_else)
          {  
                <text>
                    ...some javascript...
                    event: function(){
                       @ViewBag.Property = value;
                    }
                    ...some more javascript... 
                </text>
          }
          @else if(something_else_else)
          {
                 ...some more javascript...
          }
    <script>
}

Он отлично работает в html-файле, но я хотел бы поместить его во внешний js-файл и вместо этого просто загрузить так:

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

Однако, если я пытаюсь сделать это, я получаю ошибку: missing } in XML expression

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

Ответы [ 2 ]

4 голосов
/ 25 марта 2012

Вы можете использовать @ Html.RazorJSInclude ("scriptSource").Пожалуйста, смотрите следующую ссылку

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

2 голосов
/ 25 марта 2012

Если я вас правильно понимаю, вы помещаете код, содержащий разметку Razor, во внешний файл .JS.

Механизм представления Razor не анализирует содержимое в файлах .JS, поэтому он не будет работать какВы описываете.

Однако вы можете значительно очистить свой код, используя Частичные представления , когда в вашем представлении возникает повторяющаяся разметка Razor.

...