小编Jan*_*ard的帖子

枚举的单数或复数?

您是使用单数还是复数进行枚举?我认为在宣言中使用复数是最合理的

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)

我在某个地方读了一个建议,使用单数的常规枚举和带有标志的复数,但我想听到更多的利弊.

enumeration coding-style

76
推荐指数
6
解决办法
2万
查看次数

为什么C#中的DateTime不允许为null?

为什么不允许在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赋值的运行时错误.我只是想知道为什么这两种类型的行为不同.

c# non-nullable

37
推荐指数
3
解决办法
3万
查看次数

SPSite site = new SPSite(SPContext.Current.Web.Url)vs SPContext.Current.Web.Site

为什么有些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中运行.但什么时候不是真的?

sharepoint sharepoint-2010

15
推荐指数
1
解决办法
5万
查看次数

ASP.NET中的自定义元素,带有自定义子元素

我知道可以使用用户控件在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吗?还是有更好更正确的解决方案?

asp.net custom-controls

14
推荐指数
1
解决办法
5173
查看次数

使用 React Router 6 导航时恢复滚动位置

如何设置 React Router 6 以在导航和刷新浏览器窗口时恢复滚动位置?

React Router 5 有一个关于滚动恢复的页面,但我在v6 的文档中找不到任何有关滚动的内容,所以我猜你应该用另一个包自己处理这个问题。很公平,但我找不到任何与 React Router 6 兼容的东西。

react-scroll-restorationoaf-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)。这仅解决了页面之间滚动位置转移的问题。当滚动位置未恢复时,在页面之间导航时的用户体验会严重恶化。我想这就是弹出窗口变得如此流行的部分原因,但它们带来了一系列其他用户体验问题,所以我真的想避免使用它们。

javascript reactjs react-router-dom

13
推荐指数
2
解决办法
2万
查看次数

如何在ASP.NET中的Web应用程序之间共享用户控件?

这个问题是我关于在Web应用程序之间共享资源的问题的后续问题,因为我还没有找到一个好的解决方案.

我有一个Web应用程序,其中包含由其他三个Web应用程序共享的用户控件和资源.

Solution
|
+-CommonControlsWebApp
| +- resources
| |  +- images
| |  +- scripts
| |  +- stylesheets
| +- UserControls
| 
+-WebApp1
| 
+-WebApp2
| 
+-WebApp3

这就是我所知道的:

  • 因为我正在创建用户控件,所以我无法将CommonControlsWebApp编译成单个dll.这仅适用于自定义服务器控件,其中所有内容都位于代码隐藏文件中.所以我需要一种方法来共享四个项目之间的ascx文件.
  • 将CommonControlsWebApp中的文件复制到其他三个项目中不会更新解决方案资源管理器中的文件.在CommonControls中添加或重命名文件时,我必须在所有三个WebApp中"添加exting items".
  • 更改为Web站点模型可以解决这个问题,但是如果我这样做,我担心WebApp1-3的编译时间.
  • "添加为链接"不适用于目录.
  • 我可以使用Subversion在项目之间共享文件,但我相信如果我正在开发一个我必须通过其中一个WebApp测试的用户控件,这将要求我一直检查文件.

ASP.NET真的没有一个很好的解决方案吗?你们是如何组织大型网络应用程序的?

编辑:非常感谢所有答案.我现在要用构建事件复制我的用户控件,然后看看我们是否有时间将它们重构为服务器控件.

asp.net resources user-controls web-applications visual-studio-2008

12
推荐指数
1
解决办法
7860
查看次数

在网页上使用多个脚本块有什么不同?

编辑:正如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)

javascript google-analytics

10
推荐指数
2
解决办法
234
查看次数

是否可以让Head JS的ready()函数等待两个脚本?

我在我的网页上加载了三个脚本,我想在其中两个脚本完成加载后触发一个函数.

 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)

javascript head.js

10
推荐指数
1
解决办法
2411
查看次数

如何在Visual Studio中的Web应用程序之间共享公共Web资源?

我有三个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在所有三种解决方案中包含相同的文件.团队中没有人以前尝试过这个,所以我们不确定这会有多好.

我觉得我错过了一些关于如何设置项目的明显的解决方案.有什么建议?

asp.net resources web-applications visual-studio-2008

9
推荐指数
1
解决办法
3371
查看次数

实体框架BuildContainsExpression导致内部.NET Framework数据提供程序错误1025

我正在尝试使用以下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, …

entity-framework internal

9
推荐指数
1
解决办法
3437
查看次数