我试图弄清楚为什么框架拒绝将"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) 我在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即可实现预期行为的可能性感兴趣。
我有以下课程:
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) 我有一个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# ×3
asp.net-mvc ×1
checkbox ×1
decimal ×1
for-loop ×1
generics ×1
html ×1
inheritance ×1
label ×1