我们需要创建相同类型的多个局部视图,但是这个局部视图有一个javascript函数。如何避免在每个局部视图上定义此函数?我们不想在另一个地方定义这个功能。
答案 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();