使用Razor的MVC3 - 避免在部分视图上使用多个javascript函数定义

时间:2012-03-20 02:51:48

标签: javascript asp.net-mvc razor views partial

我们需要创建相同类型的多个局部视图,但是这个局部视图有一个javascript函数。如何避免在每个局部视图上定义此函数?我们不想在另一个地方定义这个功能。

2 个答案:

答案 0 :(得分:2)

我强烈建议更改解决方案以允许extern 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 :(得分:1)

function的定义移出部分内容并转移到global\external JavaScript文件中:

外部JS

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

<强>部分

foo();

或(取决于如何定义foo,您可能想要创建foo的实例):

var bar = new foo();