小编Dar*_*rov的帖子

为什么.NET使用银行家的舍入作为默认值?

根据文档,该decimal.Round方法使用round-to-even算法,这对于大多数应用程序来说并不常见.所以我总是最终编写一个自定义函数来做更自然的圆半算法:

public static decimal RoundHalfUp(this decimal d, int decimals)
{
    if (decimals < 0)
    {
        throw new ArgumentException("The decimals must be non-negative", 
            "decimals");
    }

    decimal multiplier = (decimal)Math.Pow(10, decimals);
    decimal number = d * multiplier;

    if (decimal.Truncate(number) < number)
    {
        number += 0.5m;
    }
    return decimal.Round(number) / multiplier;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这个框架设计决策背后的原因?

是否有任何内置的圆形半算法实现到框架中?或者可能是一些非托管Windows API?

对于初学者而言,这可能会产生误导,因为他们只是写了一个decimal.Round(2.5m, 0)期望3但结果是2.

.net rounding

264
推荐指数
4
解决办法
5万
查看次数

用javascript打印XML

我有一个字符串,表示我想要打印的非缩进XML.例如:

<root><node/></root>
Run Code Online (Sandbox Code Playgroud)

应成为:

<root>
  <node/>
</root>
Run Code Online (Sandbox Code Playgroud)

语法突出显示不是必需的.为了解决这个问题,我首先转换XML以添加回车符和空格,然后使用pre标签输出XML.为了添加新行和空格,我编写了以下函数:

function formatXml(xml) {
    var formatted = '';
    var reg = /(>)(<)(\/*)/g;
    xml = xml.replace(reg, '$1\r\n$2$3');
    var pad = 0;
    jQuery.each(xml.split('\r\n'), function(index, node) {
        var indent = 0;
        if (node.match( /.+<\/\w[^>]*>$/ )) {
            indent = 0;
        } else if (node.match( /^<\/\w/ )) {
            if (pad != 0) {
                pad -= 1;
            }
        } else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
            indent = 1;
        } else {
            indent = 0;
        }

        var padding = …
Run Code Online (Sandbox Code Playgroud)

javascript xml xslt pretty-print

123
推荐指数
8
解决办法
14万
查看次数

如何将ASP.NET应用程序部署到实时服务器?

我正在寻找用于将ASP.NET Web应用程序项目( ASP.NET网站)部署到生产中的不同技术/工具?

我对持续集成构建服务器在某个位置删除二进制文件的时间与第一个用户请求命中这些二进制文件的时间之间发生的工作流程特别感兴趣.

  1. 您使用的是某些特定工具还是只使用XCOPY?如何打包应用程序(ZIP,MSI,...)?

  2. 首次部署应用程序时,如何设置应用程序池和虚拟目录(您是手动创建还是使用某些工具创建它们)?

  3. 当静态资源发生更改(CSS,JS或图像文件)时,您是重新部署整个应用程序还是只重新部署修改后的资源?汇编/ ASPX页面何时更改?

  4. 您是否跟踪给定应用程序的所有已部署版本,如果出现问题,您是否有将应用程序恢复到先前已知工作状态的过程?

随意完成以前的列表.


以下是我们用于部署ASP.NET应用程序的内容:

  1. 我们向解决方案添加了Web部署项目,并将其设置为构建ASP.NET Web应用程序
  2. 我们将一个安装项目( Web安装项目)添加到解决方案中,并将其设置为获取Web部署项目的输出
  3. 我们添加了一个自定义安装操作,在OnInstall事件中,我们运行一个自定义生成.NET程序集,使用System.DirectoryServices.DirectoryEntry在IIS中创建一个App Pool和一个虚拟目录(此任务仅在第一次部署应用程序时执行) .我们支持IIS中的多个网站,虚拟目录的身份验证以及为应用程序池设置身份.
  4. 我们在TFS中添加一个自定义任务来构建安装项目(TFS不支持安装项目,所以我们必须使用devenv.exe来构建MSI)
  5. MSI安装在实时服务器上(如果首先卸载了MSI的先前版本)

asp.net deployment

103
推荐指数
4
解决办法
4万
查看次数

如何知道是否存在非必需的RenderSection?

@* Omitted code.. *@
@RenderBody()
@RenderSection("Sidebar", required: false)
Run Code Online (Sandbox Code Playgroud)

Omitted code如果RenderSection Sidebar存在与否,有没有办法知道该部分?

c# asp.net asp.net-mvc razor asp.net-mvc-3

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

根据Html.TextBoxFor的条件设置禁用属性

我想根据下面的asp.net MVC中的Html.TextBoxFor条件设置disable属性

@Html.TextBoxFor(model => model.ExpireDate, new { style = "width: 70px;", maxlength = "10", id = "expire-date" disabled = (Model.ExpireDate == null ? "disable" : "") })
Run Code Online (Sandbox Code Playgroud)

该助手有两个输出禁用="禁用"或禁用="".两个主题都使文本框禁用.

如果Model.ExpireDate == null,我想禁用文本框,否则我想启用它

asp.net-mvc html-helper razor asp.net-mvc-3

74
推荐指数
9
解决办法
12万
查看次数

什么时候执行$(document).ready回调?

假设我们将.click()处理程序附加到回调中的anchor(<a>)标记$(document).ready.此处理程序将取消默认操作(跟随href)并显示警报.

我想知道的是,什么时候回调将会执行,并且用户可以点击锚点(文档已经在浏览器中显示),但事件尚未附加.

以下是包含锚点的不同HTML页面,但脚本的包含顺序不同.它们之间有什么区别(如果有的话)?不同的浏览器会表现不同吗?

第1页:

<html>
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            alert('overriding the default action');
            return false;
        });
    });
    </script>
</head>
<body>
    <a href="http://www.google.com">Test</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

第2页:

<html>
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
</head>
<body>
    <a href="http://www.google.com">Test</a>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            alert('overriding the default action');
            return false;
        });
    });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

第3页: …

javascript jquery

73
推荐指数
2
解决办法
7962
查看次数

对自定义属性执行客户端验证

我创建了一个自定义验证属性:

public class FutureDateAttribute : ValidationAttribute
    {
        public override bool IsValid(object value) 
        {
            if (value == null|| (DateTime)value < DateTime.Now)
                return false;

            return true;
        }

    }
Run Code Online (Sandbox Code Playgroud)

如何使用jquery在客户端使用它?

validation asp.net-mvc jquery razor asp.net-mvc-3

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

无法将DotINTEXT签名与DotNetOpenAuth ServiceProvider一起使用

我正在OAuth 1.0(a)使用DotNetOpenAuth(NuGet包DotNetOpenAuth.OAuth.ServiceProvider, version = 4.1.4.12333)构建授权服务器.服务器托管在ASP.NET应用程序中,但这与问题无关.

ServiceProvider的配置如下:

private ServiceProvider GetServiceProvider()
{
    var baseUri = "http://myauth.com";
    return new ServiceProvider(
        new ServiceProviderDescription
        {
            UserAuthorizationEndpoint = new MessageReceivingEndpoint(
                new Uri(baseUri + "/get_request_token"), 
                HttpDeliveryMethods.GetRequest
            ),
            RequestTokenEndpoint = new MessageReceivingEndpoint(
                new Uri(baseUri + "/authorize"), 
                HttpDeliveryMethods.PostRequest
            ),
            AccessTokenEndpoint = new MessageReceivingEndpoint(
                new Uri(baseUri + "/get_token"), 
                HttpDeliveryMethods.PostRequest
            ),
            ProtocolVersion = ProtocolVersion.V10a,
            TamperProtectionElements = new ITamperProtectionChannelBindingElement[] 
            {
                new PlaintextSigningBindingElement(),
                new HmacSha1SigningBindingElement(),
            },
        },
        tokenManager,
        new OAuthServiceProviderMessageFactory(tokenManager)
    );
}
Run Code Online (Sandbox Code Playgroud)

我的get_request_token端点的相关部分如下所示: …

c# asp.net dotnetopenauth

69
推荐指数
1
解决办法
2184
查看次数

在Controller ASP.NET MVC中获取项目根路径?

我正在为我的CSS使用dotlesscss而且我记得如何使用它,但我忘记的是如何获取根项目路径以便我可以生成我的.less文件的完整文件路径以获得更少的引擎来解析.如何获取项目根路径,以便为较少的文件生成路径?

c# asp.net asp.net-mvc path

59
推荐指数
1
解决办法
6万
查看次数

如何使用ASP.net EF Codefirst Data Annotations将SQL Server中的列设置为varchar(max)?

我一直在网上搜索试图找出正确的语法,让实体框架代码首先用列创建我的表:varchar(max).

这就是我所拥有的.默认情况下,这会创建varchar(128).如何创建varchar(max)?

我试过[MaxLength]没有成功.

任何帮助,将不胜感激.谢谢!

[Column(TypeName = "varchar")]
public string MediaDesc { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework ef-code-first

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