移动多个.js的正确方法包括一个包含?

时间:2016-01-18 01:46:16

标签: javascript razor include

我有2个Razor .cshtml文件,它们具有类似以下的结构:

None

我正在编写这两个文件的公共代码,并希望将公共代码放在另一个.js(或.cshtml)文件中,而不是在两个地方重复它。但是,公共代码需要包括一些jqwidgets包含,因为它为它调用库函数。

处理此问题的正确方法是什么?我应该简单地添加一个新的.cshtml文件,移动那里的所有包含,然后在那里定义我的常用功能吗?

1 个答案:

答案 0 :(得分:0)

通常,当您拥有通用的UI代码时,您可以将其置于部分视图中,该视图可以根据需要包含在其他视图中。但在你的情况下,它更像是你想要在多个文件中的一堆javascript文件。因此,您可以创建一个script bundle,其中包含所有这些脚本,并根据需要在您的页面中使用它们。

public class BundleConfig
{

    public static void RegisterBundles(BundleCollection bundles)
    {
        // Your existing bundles here

        bundles.Add(new ScriptBundle("~/bundles/jQxWidgets")
                  .Include(
                  "~/Scripts/jqwidgets/jqxcore.js",
                  "~/Scripts/jqwidgets/jqxdata.js",
                  "~/Scripts/jqwidgets/jqxbuttons.js",
                  "~/Scripts/SomeOtherCustomJsfileRelatedtojQxWidgets.js"));
    }
}

在您的具体观看中,您可以将其添加到Scripts部分。

@section Scripts
{
  @Scripts.Render("~/bundles/jQxWidgets")
}

如果您不仅仅是将脚本作为常用内容,请创建局部视图并在其中包含常用内容,并根据需要在其他视图中包含此部分视图。

CommonGrid.cshtml文件夹

中创建名为~/Views/Shared的部分视图
<h2>Common header for both the pages </h2>
@section Scripts
{
  @Scripts.Render("~/bundles/jQxWidgets")
}

在你的其他观点中

UserList.cshtml

<h1>Users</h1>
@Html.Partial("CommonGrid")

ProductList.cshtml

<h1>Products</h1>
@Html.Partial("CommonGrid")

您还可以将CommonGrid强类型化为视图模型,并在此类型的页面特定视图模型(CommonGrid的viewmodel)中创建属性,并在Html.Partial方法中传递该属性。