TextBox在MVC3 Razor中显示2位十进制值

时间:2012-12-31 11:17:57

标签: c# asp.net-mvc-3

文本框十进制值具有以下格式" 0,0000" (,是小数点分隔符)。我只想要2位小数。我怎么能这样做?

我的模特有:

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

查看:

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

但它不起作用

提前致谢

2 个答案:

答案 0 :(得分:3)

有关MVC3中十进制格式的详细信息,请参阅此主题 Decimal Format in asp.net 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;
    }

答案 1 :(得分:0)

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

尝试如下。

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

有关详细信息,请查看Regular Expression Library Here

我希望这会对你有所帮助。