gpt4 book ai didi

javascript - MVC 3 中 CSS、Javascript 及其命名约定的管理

转载 作者:行者123 更新时间:2023-11-28 13:43:27 26 4
gpt4 key购买 nike

最近我正在构建一个严重依赖 javascript/jquery 的元素。部分 View 在渲染时,需要应用一些 javascripts 或 CSS 样式。您对管理这些文件的有效方式有什么想法吗?

最佳答案

我发现需要在我自己的元素中执行此操作,因为我希望能够为每个 View 创建一个单独的 javascript\css 文件。

我最后做的是创建一个 Controller 来为我聚合服务器上的文件,然后只将一个 css\js 文件发送到浏览器。答案可能比您要求的更复杂,所以我会推荐第一部分。

您可以制作一个扩展方法,您可以在每个页面的顶部调用该方法,以将 JS 文件添加到请求的 TempData 字典中的列表中。然后,您可以从布局中调用一个单独的方法来呈现任何其他链接。

这是有效的,因为 TempData 只为请求保留,布局的 View 最后呈现(在所有 View 和部分运行之后)。

我在这里有一个类的完整示例:http://pastebin.com/EUC2fAca但我也在形成指向我的聚合器的链接,所以你需要修改。要点如下:

public static string JSKey = "pageJSList";      

private static void AddToDictionary(HtmlHelper helper, string[] files, string key)
{
if (files == null || files.Length == 0)
return;

TempDataDictionary dict = helper.ViewContext.TempData;
if (!dict.ContainsKey(key))
dict.Add(key, new List<string>());

(dict[key] as List<string>).AddRange(files);
}

private static void InsertToDictionary(HtmlHelper helper, string[] files, string key)
{
if (files == null || files.Length == 0)
return;

TempDataDictionary dict = helper.ViewContext.TempData;
if (!dict.ContainsKey(key))
dict.Add(key, new List<string>());

(dict[key] as List<string>).InsertRange(0, files);
}

public static void AddJS(this HtmlHelper helper, params string[] files)
{
AddToDictionary(helper, files, JSKey);
}

public static void AddJSToTop(this HtmlHelper helper, params string[] files)
{
InsertToDictionary(helper, files, JSKey);
}

public static MvcHtmlString GetJsTagHtml(HtmlHelper helper)
{
var files = helper.ViewContext.TempData[JSKey] as List<string>;
StringBuilder tags = new StringBuilder();
string jsTemplate = "<script type=\"text/javascript\" src=\"/Scripts/{0}\"></script>";

foreach (string file in files)
{
tags.AppendLine(String.Format(jsTemplate, file));
}

return MvcHtmlString.Create(tags.ToString());
}

您需要 Insert 方法在布局上运行它,因为它最后运行,所以您需要插入 jquery 库或其他应该在列表中首先出现的依赖项。

您的 GetJS 方法可能应该返回一个包含所有您需要的标签的 MvcHtmlString。

希望对您有所帮助,不要啰嗦 =)

关于javascript - MVC 3 中 CSS、Javascript 及其命名约定的管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com