【发布时间】:2013-03-24 06:39:42
【问题描述】:
上下文:我正在使用 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);
}
经过几次排序(潜水)后,我得到了一些像 0,0023565 这样的数字,但当我将值发布到控制器(MVC 应用程序)时,它似乎转换为 0。我不想要这个,因为我的代码在经过几次分割后就不起作用了。我不希望我的数字四舍五入。
【问题讨论】:
-
您的问题似乎出在 jQuery 上,而不是控制器上。你在哪里失去了精确度?
-
如果我 console.log 结果我得到类似 0.00055 但是当我刷新页面(从数据库接收结果)我得到 0。控制器接收值:0.00055
-
嗯,那么问题似乎是您在数据库更新中失去了精度。您是否已验证该值是否符合您在数据库中的预期值?
-
请重述您的问题标题。这是误导。
-
自发布问题以来我稍微更改了代码,但是当我在更新行上设置断点时,似乎该数字具有必要的精度,但在数据库中只有小数点后的两个数字。数据库中的所有优先级在小数点后都有两个数字。
标签: c# jquery decimal jquery-ui-sortable