您是使用单数还是复数进行枚举?我认为在宣言中使用复数是最合理的
enum Weekdays
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Run Code Online (Sandbox Code Playgroud)
...但我认为使用该类型时,单数形式更有意义,例如
Weekday firstDayOfWeek = Weekday.Monday;
Run Code Online (Sandbox Code Playgroud)
我在某个地方读了一个建议,使用单数的常规枚举和带有标志的复数,但我想听到更多的利弊.
为什么不允许在C#中为null分配null?这是如何实现的?是否可以使用此功能使您自己的类不可为空?
例:
string stringTest = null; // Okay
DateTime dateTimeTest = null; // Compile error
Run Code Online (Sandbox Code Playgroud)
我知道我可以DateTime?在C#2.0中使用以允许将null分配给dateTimeTest,并且我可以在我的字符串上使用Jon Skeet的NonNullable类来获取stringTest赋值的运行时错误.我只是想知道为什么这两种类型的行为不同.
为什么有些SharePoint示例会使用
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
...
}
Run Code Online (Sandbox Code Playgroud)
而不仅仅是简单?
SPSite site = SPContext.Current.Web.Site;
...
Run Code Online (Sandbox Code Playgroud)
更新
我想我已经把问题缩小到以下几点:
似乎我不应该SPContent.Current直接使用,除非我确定,我的代码在SharePoint中运行.但什么时候不是真的?
我知道可以使用用户控件在ASP.NET中定义自定义标记.但据我所知,您只能为这些控件添加属性.我希望能够嵌入更复杂的数据,有点精简:
<myControls:MyGraph id="myGraph1" runat="server">
<colors>
<color>#abcdef</color>
<color>#123456</color>
</colors>
</myControls:MyGraph>
Run Code Online (Sandbox Code Playgroud)
这在ASP.NET中可能吗?我应该尝试扩展ListView吗?还是有更好更正确的解决方案?
如何设置 React Router 6 以在导航和刷新浏览器窗口时恢复滚动位置?
React Router 5 有一个关于滚动恢复的页面,但我在v6 的文档中找不到任何有关滚动的内容,所以我猜你应该用另一个包自己处理这个问题。很公平,但我找不到任何与 React Router 6 兼容的东西。
包react-scroll-restoration和oaf-react-router需要v5。(oaf-react-router 确实列出了它支持 v6,但基本使用代码示例与 v6 不兼容,相关问题 #210仍然处于开放状态。)
Gatsby 和 Next.js 支持开箱即用的滚动恢复,但我看起来没有一个可以直接使用的整齐打包的包。
这个带有服务器端渲染页面的小演示应用程序可以满足我的需求。当来回导航并刷新浏览器窗口时,滚动位置会恢复。
这是使用 React Router 6 的同一个应用程序,其中滚动位置不会保存和恢复,但实际上在页面之间重用。通常的解决方法是每当导航页面时滚动到顶部,但我对这种行为不感兴趣。
编辑:React Query 写道,滚动恢复的问题是页面正在重新获取数据,这意味着如果用于渲染页面的数据存在,则滚动恢复就可以工作。我无法确认这一点,因为我的小型 React Router 6 应用程序即使根本没有进行任何数据获取也存在问题。我觉得为了让它发挥作用,我缺少一些小东西。
Rant:令我感到非常惊讶的是,这个问题的典型答案是在导航时打电话window.scrollTo(0, 0)。这仅解决了页面之间滚动位置转移的问题。当滚动位置未恢复时,在页面之间导航时的用户体验会严重恶化。我想这就是弹出窗口变得如此流行的部分原因,但它们带来了一系列其他用户体验问题,所以我真的想避免使用它们。
这个问题是我关于在Web应用程序之间共享资源的问题的后续问题,因为我还没有找到一个好的解决方案.
我有一个Web应用程序,其中包含由其他三个Web应用程序共享的用户控件和资源.
Solution | +-CommonControlsWebApp | +- resources | | +- images | | +- scripts | | +- stylesheets | +- UserControls | +-WebApp1 | +-WebApp2 | +-WebApp3
这就是我所知道的:
ASP.NET真的没有一个很好的解决方案吗?你们是如何组织大型网络应用程序的?
编辑:非常感谢所有答案.我现在要用构建事件复制我的用户控件,然后看看我们是否有时间将它们重构为服务器控件.
asp.net resources user-controls web-applications visual-studio-2008
编辑:正如Andrew Moore所指出的那样,这个问题与Google Analytics的两个独立脚本标签重复了吗?所以应该删除这个问题以避免混乱Stack Overflow,除非有一点保持这个,因为它可能会出现在略有不同的搜索中.
在网页上使用多个脚本块有何不同?我已经在标准代码中粘贴了Google Analytics(分析)作为示例,我看到了其他地方使用的相同模式.为什么这段代码分成两个独立的脚本块而不是仅使用一个?
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._trackPageview();
} catch(err) {}
</script>
Run Code Online (Sandbox Code Playgroud) 我在我的网页上加载了三个脚本,我想在其中两个脚本完成加载后触发一个函数.
head.js(
{ webfont: 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' },
{ jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' },
{ analytics: 'http://www.google-analytics.com/ga.js' }
);
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够执行以下操作,但根据文档(请参阅脚本组织),似乎无法使head.ready()等待加载两个脚本.
head.ready('jquery', function() {
// Code that requires jQuery.
});
// This is not supported. :-(
head.ready('jquery', 'analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
Run Code Online (Sandbox Code Playgroud)
那我该怎么解决呢?如果我嵌套就绪方法,我可以确定我的代码将被触发,还是只有在jquery在分析之前完成加载时才会触发它?
head.ready('jquery', function() {
// Code that requires jQuery.
// ...
head.ready('analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
});
Run Code Online (Sandbox Code Playgroud)
另一种解决方案可能是将加载语句分成两部分,如下所示.但是,我仍然可以从异步加载脚本中获益,还是在jquery和分析之前完成加载webfont?
head.js(
{ webfont: …Run Code Online (Sandbox Code Playgroud) 我有三个Web应用程序项目共享一个公共自定义服务器控件库.共享文件背后的代码很简单 - 它们被编译成一个dll,我使用项目引用在其他项目中引用它.但是我如何处理JavaScript,样式表和图像等文件?我试图这样做"Visual Studio方式",以便尽可能简单地理解和调试.
目前的设置有点像这样:
CommonControlsWebApp +- CustomControls +- resources +- images +- scripts +- stylesheets WebApp1 +- resources* WebApp2 +- resources* WebApp3 +- resources*
*)IIS中的虚拟目录.
每个Web应用程序上的虚拟目录都指向CommonControlsWebApp中的资源目录.这是在IIS中配置的.Visual Studio无法理解此链接,因此调试需要我手动附加到IIS进程.
另一种解决方案可能是使用WebResourceAttribute包含公共dll中的每个资源.但是src当我查看我的网页来源时,这会将链接转换为WebResource.axd?d = GUID,而我担心这会让调试变得非常混乱.
第三种解决方案是使用Subversion在所有三种解决方案中包含相同的文件.团队中没有人以前尝试过这个,所以我们不确定这会有多好.
我觉得我错过了一些关于如何设置项目的明显的解决方案.有什么建议?
我正在尝试使用以下LINQ查询来对数据库(3.5 SP1)起作用:
var labelIds = new List<int> { 1, 2 };
var customersAggregatedTransactionsByType =
(from transactions in context.TransactionSet
from customers in context.CustomerSet
.Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
from accounts in context.AccountSet
where customers == accounts.Customer
&& accounts.Id == transactions.Account.Id
&& transactions.DateTime >= fromDate && transactions.DateTime < toDate
group transactions.Amount
by new
{
UserAccountId = transactions.Account.Id,
TransactionTypeId = transactions.TransactionTypeId,
BaseAssetId = accounts.BaseAssetId
} into customerTransactions
select customerTransactions).ToList();
Run Code Online (Sandbox Code Playgroud)
一旦我添加,Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))我得到以下异常:
System.InvalidOperationException:内部.NET Framework数据提供程序错误1025.
如果我删除Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, …
asp.net ×3
javascript ×3
resources ×2
c# ×1
coding-style ×1
enumeration ×1
head.js ×1
internal ×1
non-nullable ×1
reactjs ×1
sharepoint ×1