在 asp.net mvc 3 应用程序中,我有两个视图,它们具有相同的 javascript 函数集。Javascript 是相同的,所以我想重新组织此代码并将所有 javascript 代码提取到 .js 文件中,以便将其包含在两个 chtml 文件中。
问题是其中一个 javascript 函数使用 C# 代码从模型中获取一些数据。如何将 C# 代码插入到 javascript(.js) 文件中,或者如何将所有这些代码提取到单独的 chtml 文件中并将其包含在前面的两个文件中?
在 asp.net mvc 3 应用程序中,我有两个视图,它们具有相同的 javascript 函数集。Javascript 是相同的,所以我想重新组织此代码并将所有 javascript 代码提取到 .js 文件中,以便将其包含在两个 chtml 文件中。
问题是其中一个 javascript 函数使用 C# 代码从模型中获取一些数据。如何将 C# 代码插入到 javascript(.js) 文件中,或者如何将所有这些代码提取到单独的 chtml 文件中并将其包含在前面的两个文件中?
你不能在本地,或者至少你不应该。出于维护和性能原因。
相反,您应该重新设计您的 javascript 以具有参数化方法,并从您的视图中初始化自定义值。
像 jQuery 一样思考。许多插件都是可用的、标准化的,但它们在使用它们的页面上被初始化为特定值。
如果您的 javascript 包含不同的数据,那么它就不相同。
我会将相同的功能提取到 .js 文件中,然后在您的页面中生成 .js 可以使用的大量 javascript 数据,或者重构为返回 JSON 的服务。
您可以使用局部视图来编写<script>
标签并从两个页面调用它。如果您认为这更合适,您也可以使用 HTML 助手。
但是,我也不推荐。
一种选择是找到一种方法将更改的值放入您的页面(可能作为 html5data-
属性),然后为您的 JavaScript 代码使用外部 .js 文件,该文件不由 C# 操作,而是从HTML 本身。
另一个(不太漂亮)的选项是让每个页面在标签中设置一系列 JS 变量<script>
,然后在您的外部 .js 文件中使用它们。