我有2个Razor .cshtml文件,它们具有类似以下的结构:
None
我正在编写这两个文件的公共代码,并希望将公共代码放在另一个.js(或.cshtml)文件中,而不是在两个地方重复它。但是,公共代码需要包括一些jqwidgets包含,因为它为它调用库函数。
处理此问题的正确方法是什么?我应该简单地添加一个新的.cshtml文件,移动那里的所有包含,然后在那里定义我的常用功能吗?
答案 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
方法中传递该属性。