我多年来一直在网站上使用ScriptManager和jQuery滑块小部件,但我最近遇到了一个阻止小部件工作的问题.我设法解决了这个问题,但这比运气专业更不幸运.我希望有人可以提供问题背后的推理,并且该解决方案可能对具有相同问题的其他人有用.
我使用了一个脚本聚合器,它将我的脚本组合在一起 - 这里是它包含的内容 - 为简洁起见,所有代码片段都已配对:
vendor/Modernizr.min.js
vendor/jQuery.3.0.0.min.js
vendor/jQuery-UI.1.12.1.min.js
vendor/jQuery-UI.TouchPunch.min.js
propriertary/LoanSelector.js
DefaultInit.js
Run Code Online (Sandbox Code Playgroud)
这是DefaultInit.js的内容:
$(document).ready(function () {
loanSelector.init();
});
Run Code Online (Sandbox Code Playgroud)
这是LoanSelector.js的骨干
var loanSelector = function () {
var pub = {}, $ctl = $("#loan-selector"),
$sliderAmount = $ctl.find(".slider-amount:first"),
$widgetAmount = $sliderAmount.find(".widget:first");
function initControl() {
initWidgetAmount(100, 2000, 100, $("#hfStartAmount").val());
}
function initWidgetAmount(min, max, step, initialVal) {
$widgetAmount.slider({
});
}
pub.init = function () {
initControl();
};
return pub;
} ();
Run Code Online (Sandbox Code Playgroud)
现在这个工作 - 但只在页面上没有ScriptManager.
添加脚本管理器时,滑块小部件不会加载 - 没有错误 - 什么都没有.
缓存的元素是页面上的永久固定装置 - 因此不是某个时间点不存在的元素的情况.
这是ScriptManager代码:
<asp:ScriptManager ID="SM" …
Run Code Online (Sandbox Code Playgroud) 我的页面上散布了一些javascript片段 - 很多都包含在我自己的.js文件中,但是我在网上找到的一些东西直接放在页面上.
我不太熟悉javascript与页面的交互方式 - 添加内联脚本或添加对外部文件的引用是否有区别?
我有一个旧的防护类 - 它是const或静态方法,典型的是一个实用类.
然而,最近我开始使用NLog - 所以我的守卫现在可以记录和投掷.NLog的问题是每个调用类(守卫所在的位置)都会创建自己的记录器,因此不是这样的方法:
public static void NotNull<T>(T obj, string param)
{
if (obj.Equals(null))
throw new ArgumentNullException(param);
}
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的签名的方法:
public static void NotNull<T>(T obj, string param, Logger logger, LogLevel logLevel)
{
}
Run Code Online (Sandbox Code Playgroud)
现在我的所有方法都包含与记录器相关的两个相同参数,所以我几乎决定依赖注入是一种更好的方法,将记录器传递给构造函数,然后obj进入方法.
我的问题是基于我的经验不足 - 我的新课程不会是静态的,但是我应该将这些方法保留为静态吗?
我有一种方法可以用来Regex
在文本中查找模式string
。它可以工作,但是并不合适,因为它要求文本以确切的顺序出现,而不是将短语视为一组单词。
public static string HighlightExceptV1(this string text, string wordsToExclude)
{
// Original version
// wordsToExclude usually consists of a 1, 2 or 3 word term.
// The text must be in a specific order to work.
var pattern = $@"(\s*\b{wordsToExclude}\b\s*)";
// Do something to string...
}
Run Code Online (Sandbox Code Playgroud)
此版本对以前的版本进行了改进,因为它确实允许单词以任何顺序进行匹配,但是由于删除了间距并用管道替换了间距,因此最终输出中会出现间距问题。
public static string HighlightExceptV2(this string text, string wordsToExclude)
{
// This version allows the words to be matched in any order, but it has
// …
Run Code Online (Sandbox Code Playgroud) 我一直在查看,并在我目前正在进行的开发项目中实现了客户端缓存。
当我使用 Asp.Net 时,我已经使用以下代码直接更新了 web.config 文件:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)
我还实现了一个“指纹”解决方案,它允许我自动使缓存中的 CSS 和脚本文件过期。
但是,我开始考虑如果图像更改会怎样 - 假设它被修改并重新上传而没有被重命名。在这种情况下,我不一定希望浏览器继续缓存图像的旧版本长达一年。
因此,问题是可以使用 web.config 静态内容部分为不同的文件类型设置不同的缓存持续时间吗?
我已经创建了一个函数来过滤和排序列表的内容.
这看起来有点"笨拙",但Linq不强.我想知道这个功能是否可以简化,无论是从性能角度还是从审慎的角度来看.
这是代码:
//反序列化XML以创建一类活动行
var agents = XmlHelper
.Deserialise<AgentConfigs>("~/Pingtree.xml")
.Agents
.Where(x => x.IsActive == true);
Run Code Online (Sandbox Code Playgroud)
//首先 - 获取'直接'代理并订购它们
var direct = agents
.Where(x => x.IsDirect)
.OrderByDescending(x => x.MinPrice);
Run Code Online (Sandbox Code Playgroud)
//第二 - 获取间接代理并对其进行排序
var agency = agents
.Where(x => !x.IsDirect)
.OrderBy(x => x.Priority);
Run Code Online (Sandbox Code Playgroud)
//将2个子列表固定在一起,保留顺序
Agents = direct.Concat(agency).ToList();
Run Code Online (Sandbox Code Playgroud)
有关如何改进的任何想法?
我正在尝试对齐由 3 个内容块组成的顶部菜单。
我想要实现的是:
如果所有 3 个块的大小相同,我可以使用 flexbox(如代码段中所示),但它们不是,因此它不会产生我需要的输出。
相反,flexbox 在 3 个块之间放置相等的空间 - 导致中间块偏离中心对齐。
我想知道这是否可以通过 flexbox 来实现,或者如果不能,另一种解决方案。这需要在生产中稳健运行,因此“网格”解决方案不适用,因为支持不足。
.container {
margin: 20px 0;
}
.row {
background-color: lime;
display: flex;
justify-content: space-between;
}
.item {
background-color: blue;
color: #fff;
padding: 16px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="row">
<div class="item">left, slightly longer</div>
<div class="item">center, this item is much longer</div>
<div class="item">right</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我有一个经常性的课程 - 我在下面简化了它。
public class SiloNode
{
public string Key { get; private set; }
public string Url { get; private set; }
public List<SiloNode> Children { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
尽管从理论上讲,它可以永远嵌套,但节点只会向下两层。因此,顶级节点可以有子节点,但子节点不能有子节点。
我有一个主列表,其中包含所有顶级节点及其嵌套子节点。
但是,我需要将所有节点放入一个平面列表中 - 节点 1,然后是它的子节点,然后是节点 2 等。
我在这方面的知识有限,但我可以做一些事情,比如foreach
遍历主列表并创建一个新列表,如下所示:
public IEnumerable<SiloNode> GetLinks(IEnumerable<SiloNode> masterList)
{
var newList = new List<SiloNode>();
foreach (var node in masterList)
{
newList.Add(node);
newList.AddRange(node.Children);
}
return newList;
}
Run Code Online (Sandbox Code Playgroud)
但是,我知道可能有更好的方法,但我只是不知道如何将其转换foreach
为Linq
执行相同操作的语句。换句话说,一起选择父项及其子项。
任何帮助表示赞赏。
我有一段 html/css 代表一个带边框的按钮。
该按钮具有覆盖按钮的伪元素 - 这个简单的示例显示了其中之一。
伪元素比原始元素高(使用 px 设置高度),但宽度相同(设置为 100%)。
在当前的设计中,有两个问题没有按照我的预期工作:
这在 Chrome 和 Edge 中似乎是相同的,这表明我没有做正确的事情 - 然而,我对盒子大小特别困惑。
.container {
padding: 50px;
}
.button {
border: solid 4px red;
box-sizing: border-box;
display: inline-flex;
justify-content: center;
align-items: center;
height: 36px;
padding: 0 16px;
position: relative;
z-index: 1;
}
.button::before {
background-color: rgba(76, 255, 0, 0.8);
box-sizing: inherit;
content: "";
display: block;
position: absolute;
top: -4px;
left: 0;
height: 44px;
width: 100%;
z-index: -1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<a …
Run Code Online (Sandbox Code Playgroud)使用c#,我希望个性化页面,如果它是用户遇到的第一页.
我不担心解决方案是否是防弹的,因为该功能纯粹是非常复杂的并且可能会降级.
它必须使用ASP.NET方法,而不是JavaScript.