小编Iva*_*nko的帖子

ASP.NET MVC绑定十进制值

我试图弄清楚为什么框架拒绝将"1,234.00"值绑定到十进制.它可能是什么原因?

像"123.00"或"123.0000"这样的值绑定成功.

我有以下代码在Global.asax中设置我的文化配置

    public void Application_AcquireRequestState(object sender, EventArgs e)
    {
        var culture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
        culture.NumberFormat.NumberDecimalSeparator = culture.NumberFormat.CurrencyDecimalSeparator = culture.NumberFormat.PercentDecimalSeparator = ".";
        culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = culture.NumberFormat.PercentGroupSeparator = ",";
        Thread.CurrentThread.CurrentCulture = culture;
    }
Run Code Online (Sandbox Code Playgroud)

法国文化在Web.Config中被设置为默认文化

  <globalization uiCulture="fr-FR" culture="fr-FR" />
Run Code Online (Sandbox Code Playgroud)

我潜入了System.Web.Mvc.dll的ValueProviderResult类的源代码.它使用的是System.ComponentModel.DecimalConverter.

converter.ConvertFrom((ITypeDescriptorContext) null, culture, value)
Run Code Online (Sandbox Code Playgroud)

这是消息"1,234.0000不是十进制的有效值".来自.

我试图在我的操场上运行以下代码:

static void Main()
{
    var decConverter = TypeDescriptor.GetConverter(typeof(decimal));
    var culture = new CultureInfo("fr-FR");
    culture.NumberFormat.NumberDecimalSeparator = culture.NumberFormat.CurrencyDecimalSeparator = culture.NumberFormat.PercentDecimalSeparator = ".";
    culture.NumberFormat.NumberGroupSeparator = culture.NumberFormat.CurrencyGroupSeparator = culture.NumberFormat.PercentGroupSeparator = ",";
    Thread.CurrentThread.CurrentCulture = culture;
    var d1 = Decimal.Parse("1,232.000");
    Console.Write("{0}", d1); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc decimal

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

如何在关注具有tabindex的标签时按空格来切换复选框?

我在html中广泛使用与复选框输入相关的标签。它允许用户单击宽标签并获得他想要的内容-复选框切换。我想通过Space在关注标签时按下切换复选框来实现类似的行为。为了使标签聚焦,我添加tabindex="0"了标签。我也不希望复选框具有焦点,因此我要添加tabindex="-1"输入。

这是两个示例,一个使用标签标签包装,另一个使用for属性。

<input type="button" value="Click then press tab." /><br/>
<label tabindex="0">Accept terms <input type="checkbox" tabindex="-1"/></label><br/>
<label for="MyCheckbox" tabindex="0">Accept terms</label> <input type="checkbox" id="MyCheckbox" tabindex="-1"/>
Run Code Online (Sandbox Code Playgroud)

我对无需任何JavaScript即可实现预期行为的可能性感兴趣。

html checkbox label

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

如何在C#中使用派生类型重写泛型方法

我有以下课程:

public interface IService
{
    void ApplyChanges<T>(T parameters) where T : ParamBase;
}

public class ServiceBase : IService
{
    public virtual void ApplyChanges<T>(T parameters) where T : ParamBase
    { }
}
public abstract class Service : ServiceBase
{
    public override void ApplyChanges<T>(T parameters) where T : ParamBase
    {
        Console.WriteLine(parameters.Param2);
        //Apply changes logic here...
    }
}

public abstract class ParamBase
{
    public string Param1 { get; set; }
}

public class ParamA : ParamBase
{
    public string Param2 { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance

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

C#For循环没有正确迭代

我有一个4字节的值,我转换为Int32,然后在文本框中显示它.没有问题.当我尝试用0填充字符串时出现问题.当我显示十进制数时,它应该总是包含8个字符,所以如果它小于我想要用0填充它.

string parmDecString = BitConverter.ToInt32(testNum, 0).ToString();
Console.WriteLine("length: {0} - {1}", parmDecString.Length, (8 - parmDecString.Length));
for (int l=0; l < (8-parmDecString.Length); l++)
{
    parmDecString = "0" + parmDecString;
}
textBox74.Text = parmDecString;
Run Code Online (Sandbox Code Playgroud)

这是我根据不同的'parmDecString'值得到的文本框中的输出:

parmDecString = "123"
Console:  length: 3 - 5
textbox:  000123   <=== only 3 times in the 'for' loop, expected 5x

parmDecString = "12345"
Console:  length: 5 - 3
textbox:  0012345   <=== only 2 times in the 'for' loop, expected 3x

parmDecString = "12345678"
Console:  length: 8 - 0 …
Run Code Online (Sandbox Code Playgroud)

c# for-loop

0
推荐指数
1
解决办法
80
查看次数

标签 统计

c# ×3

asp.net-mvc ×1

checkbox ×1

decimal ×1

for-loop ×1

generics ×1

html ×1

inheritance ×1

label ×1