2

文本框十进制值的格式为“0,0000”(, 是小数分隔符)。我希望只有 2 位小数。我怎样才能做到这一点 ?

我的模型有:

 [DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
    public decimal DisplayOrder { get; set; }

看法:

@Html.EditorFor(model => model.DisplayOrder)

但它不起作用

提前致谢

4

2 回答 2

3

您可以参考此主题以获取有关asp.net mvc3中 MVC3 十进制格式的十进制格式的更多信息

和这个链接类似的问题 Formatting decimal in asp.net mvc3

如果上述方法均无效,您可以尝试将您的数字转换为字符串并将其传递给此函数。

 /// <summary>
    /// Formatting a given number to 0,00
    /// </summary>
    /// <param name="number"></param>
    /// <returns></returns>
    string NumberFormatting(string number)
    {
        if (number.Contains(','))
        {
            string[] str = number.Split(',');
            if (str[1].Length == 1)
            {
                number += "0";
            }
        }
        else
        {
            number += ",00";
        }
        return DecreaseNumberDigits(number);
    }

    /// <summary>
    /// To allow only two digits after the decimal mark
    /// </summary>
    /// <param name="number"></param>
    /// <returns></returns>
    string DecreaseNumberDigits(string number)
    {
        if (number.Contains(','))
        {
            string[] str = number.Split(',');
            if (str[1].Length > 2)
                number = str[0] + "," + str[1].ToCharArray()[0].ToString() + str[1].ToCharArray()[1].ToString();
        }
        return number;
    }
于 2012-12-31T13:41:57.090 回答
0

您可以使用正则表达式来完成您的工作。

尝试如下。

[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "Price must can't have more than 2 decimal places")]
public decimal DisplayOrder { get; set; }

有关更多信息,请在此处查看正则表达式库

我希望这对你有帮助。

于 2012-12-31T12:30:33.123 回答