MVC3 с Razor - Избегайте нескольких определений функций JavaScript на частичных представлениях - PullRequest
2 голосов
/ 20 марта 2012

Нам нужно создать несколько частичных представлений одного и того же типа, но это частичное представление имеет функцию javascript. Как я могу избежать определения этой функции в каждом частичном представлении? Мы не хотим определять эту функцию в другом месте.

Ответы [ 2 ]

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

Я бы настоятельно рекомендовал изменить решение, чтобы разрешить ссылки на внешние javascript. Если это просто невозможно сделать, может сработать следующее. Сначала я предположу, что вы делаете что-то вроде:

/ Views / Shared / MyModelPartial1.cs /

@model MyModel

<script type="text/javascript">
  var a = "@Model.SomeStringProperty";
  var b = @Model.SomeNumberProperty;
</script>

<span>Some Html!</span>

/ Views / Shared / MyModelPartial2.cs /

@model MyModel

<script type="text/javascript">
  var a = "@Model.SomeStringProperty";
  var b = @Model.SomeNumberProperty;
</script>

<div>Different Html Than 1</div>

Если вы пытаетесь разделить этот Javascript между двумя частями, то создайте другое частичное представление, которое может выглядеть примерно так:

/ Views / Shared / MyModelJavascript.cs /

@model MyModel

<script type="text/javascript">
  var a = "@Model.SomeStringProperty";
  var b = @Model.SomeNumberProperty;
</script>

/ Views / Shared / MyModelPartial1.cs /

@model MyModel

@Html.Partial("MyModelJavascript", Model)

<span>Some Html!</span>

/ Views / Shared / MyModelPartial2.cs /

@model MyModel

@Html.Partial("MyModelJavascript", Model)

<div>Different Html Than 1</div>
1 голос
/ 20 марта 2012

Переместите определение function из частичного в global\external файл JavaScript:

Внешний JS

function foo () {        
     /* ... code ... */
}

Частичное

foo();

или (в зависимости от того, как определен foo, вы можете создать экземпляр foo):

var bar = new foo();
...