Мне удалось решить эту проблему с помощью страницы макета, в которой был раздел с именем jsCode.
@RenderSection("jsCode",false)
Затем, когда мне это нужно, я создал на странице содержимого:
@section jsCode
{
<script type="text/JavaScript" src="myJsCode.js"></script>
}
youмог бы также создать помощника, который выплевывает скрипты, которые вам нужны для конкретной страницы, и инкапсулирует его таким образом, например:
@helper MyJSFunction(string FunctionName){
switch(FunctionName)
{
case "firstFN":
<text>
<script type="text/JavaScript">
function SaySomethingSilly()
{
var sillySaying="We are the knights who say 'ni'!";
alert(sillySaying);
}
</script>
</text>
break;
case "secondFN":
<text>
<script type="text/JavaScript">
function SaySomethingElse()
{ var sillySaying="We are looking for a shrubbery...";
alert(sillySaying);
}
</script>
</text>
break;
}
}
Тогда моя страница контента (при условии, что мне нужны обе функции) выглядит следующим образом:
@{
Page.Title="Using helpers to create scripts";}
@section jsCode
{
@JSHelpers.MyJSFunction("firstFN")
@JSHelpers.MyJSFunction("secondFN")
}
<p>It works!</p>
, который выдает вывод:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Using helpers to create scripts</title>
<script type="text/JavaScript">
function SaySomethingSilly()
{
var sillySaying="We are the knights who say 'ni'!";
alert(sillySaying);
}
</script>
<script type="text/JavaScript">
function SaySomethingElse()
{ var sillySaying="We are looking for a shrubbery...";
alert(sillySaying);
}
</script>
</head>
<body>
<p>It works!</p>
</body>
</html>
Теперь, если вы хотите получить супер-эффективность, (хотя на ум приходят другие слова), вы можете передать функции массив JSON илисловарь или даже строковый массив с именами сценариев, которые вы хотите использовать, или JavaScript для импорта, или что-то еще, и просто используйте один вызов помощника.Я думаю, что отдельные вызовы легче поддерживать, независимо от того, как вы загружаете возвращаемые значения вспомогательной функции, потому что вы можете сразу увидеть, какие сценарии вы используете на данной странице, и удалить или добавить один из них просто.-линейное изменение, а не изменение одного элемента массива.
Как всегда, ваш пробег может отличаться, но я без проблем выполнил пример на основе этого кода в WebMatrix Beta 2.
Лиза З. Морган http://www.lairhaven.com