上下文:我正在使用Sortable
进行排序。
$("#sortable").sortable({
update: function (e,ui)
{
nextItemPrio=parseFloat(ui.item.next().find("input[name='Priority']").val().replace(",", "."));
prevItemPrio = parseFloat(ui.item.prev().find("input[name='Priority']").val().replace(",", "."));
currentItemPrio = parseFloat(ui.item.find("input[name='Priority']").val().replace(",", "."));
if ((nextItemPrio < currentItemPrio && prevItemPrio < currentItemPrio)
|| (nextItemPrio > currentItemPrio && prevItemPrio > currentItemPrio)) {
ui.item.find("input[name='Priority']").val((prevItemPrio + nextItemPrio) / 2.0);
}
在控制器中我有:
public ActionResult UpdatePicturePriority(int id, string newpriority)
{
var a = _PictureRepo.GetById(id);
decimal convertDecimal = Convert.ToDecimal(newpriority.Replace(".", ","),);
a.Priority = convertDecimal;
_PictureRepo.Update(a);
return Json(true);
}
经过几次排序(divings)之后,我得到了一些像 0,0023565
这样的数字,但是当我将值发布到控制器(MVC应用程序)时,似乎转换为0
。我不想要这个,因为我的代码在几次分离后不起作用。我不希望我的数字四舍五入。
答案 0 :(得分:1)
看起来您的十进制转换在您的控制器中不起作用。
decimal convertDecimal = Convert.ToDecimal(newpriority.Replace(".", ","),);
您正在上面的代码行中用逗号(,)替换小数点(。)。这是什么原因?
如果无法进行转换,则Convert.ToDecimal方法将默认为0,因此为0的原因。
以下是Microsoft的示例,要么更改格式提供程序,要么使用默认的小数位(。)
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] values = { "123456789", "12345.6789", "12 345,6789",
"123,456.789", "123 456,789", "123,456,789.0123",
"123 456 789,0123" };
CultureInfo[] cultures = { new CultureInfo("en-US"),
new CultureInfo("fr-FR") };
foreach (CultureInfo culture in cultures)
{
Console.WriteLine("String -> Decimal Conversion Using the {0} Culture",
culture.Name);
foreach (string value in values)
{
Console.Write("{0,20} -> ", value);
try {
Console.WriteLine(Convert.ToDecimal(value, culture));
}
catch (FormatException) {
Console.WriteLine("FormatException");
}
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// String -> Decimal Conversion Using the en-US Culture
// 123456789 -> 123456789
// 12345.6789 -> 12345.6789
// 12 345,6789 -> FormatException
// 123,456.789 -> 123456.789
// 123 456,789 -> FormatException
// 123,456,789.0123 -> 123456789.0123
// 123 456 789,0123 -> FormatException
//
// String -> Decimal Conversion Using the fr-FR Culture
// 123456789 -> 123456789
// 12345.6789 -> FormatException
// 12 345,6789 -> 12345.6789
// 123,456.789 -> FormatException
// 123 456,789 -> 123456.789
// 123,456,789.0123 -> FormatException
// 123 456 789,0123 -> 123456789.0123