【发布时间】:2020-09-13 18:29:33
【问题描述】:
在 ASP.NET MVC 中工作时,我创建了一个在同一页面上呈现 2 次的局部视图。我的问题是 JavaScript 包含的次数与部分视图一样多,并且 JavaScript 不喜欢重新定义类。
我的问题是:如何在局部视图中包含 JavaScript,使其保持模块化,但只在页面中包含一次?我对需要将 .js 文件与部分视图的内容分开包含的解决方案不感兴趣,例如
<script src="some.js"></script>
@Html.Partial("some/partial.cshtml")
@Html.Partial("some/partial.cshtml")
但我可以接受包含在局部视图中的单独 .js 文件。局部视图应包含使其工作所需的一切。
我的代码结构如下:
<div id=@ViewBag.id></div>
<script>
class MyClass{
constructor(divName){
this._divId = divId;
}
doSomething(){
/* do stuff with element that has id of divId */
}
}
</script>
然后,在调用文件中,我有
<body>
@Html.Partial("/Views/MyPartial.cshtml", new ViewDataDictionary() { { "id", "id_1"} })
@Html.Partial("/Views/MyPartial.cshtml", new ViewDataDictionary() { { "id", "id_2"} })
</body>
<script>
$().ready(function(){
id1Functionality = new MyClass("id_1"); // please forgive the poor naming :-)
id2Functionality = new MyClass("id_2");
id1Functionality.doSomething();
id2Functionality.doSomething();
})
</script>
【问题讨论】:
-
我回答了自己的问题,但很乐意接受更好(更简单、更强大、更优雅)的答案,因此等待接受我自己的问题。
标签: javascript c# razor asp.net-mvc-5