Asp.net mvc asp.net mvc中十进制数据类型的验证错误

Asp.net mvc asp.net mvc中十进制数据类型的验证错误,asp.net-mvc,Asp.net Mvc,我在数据库中为longitute和latitute定义了一个数据类型decimal(18,10)。但当我试图输入并提交表单时,它总是说“验证错误”。 我使用了linqtosql。它是否为我生成了一些验证规则,否则为什么我不能用“2.34”之类的数字输入这两个 提前谢谢 namespace Nerddinner.Models { interface IDinnerRepository { IQueryable<Dinner> FindAllDinners

我在数据库中为longitute和latitute定义了一个数据类型
decimal(18,10)
。但当我试图输入并提交表单时,它总是说“验证错误”。 我使用了
linqtosql
。它是否为我生成了一些验证规则,否则为什么我不能用“2.34”之类的数字输入这两个

提前谢谢

namespace Nerddinner.Models
{
    interface IDinnerRepository
    {
        IQueryable<Dinner> FindAllDinners();
        Dinner GetDinner(int id);
        void AddDinner(Dinner dinner);
        void UpdateDinner(Dinner dinner);
        void DeleteDinner(Dinner dinner);
    }
}


namespace Nerddinner.Models
{
    public class sqlDinnerRepository: IDinnerRepository
    {
        dbDataContext db;
        public sqlDinnerRepository()
        {
            db = new dbDataContext();
        }

        public IQueryable<Dinner> FindAllDinners()
        {
            return db.Dinners;
        }

        public Dinner GetDinner(int id)
        {
            return db.Dinners.SingleOrDefault(x => x.DinnerID == id);
        }

        public void AddDinner(Dinner dinner)
        {
            db.Dinners.InsertOnSubmit(dinner);
        }

        public void UpdateDinner(Dinner dinner)
        {
            db.SubmitChanges();
        }

        public void DeleteDinner(Dinner dinner)
        {
            db.Dinners.DeleteOnSubmit(dinner);
        }
    }
}


namespace Nerddinner.Controllers
{
    public class DinnerController : Controller
    {
        IDinnerRepository _repository;
        public DinnerController()
        {
            _repository = new sqlDinnerRepository();
        }

        public DinnerController(IDinnerRepository repository)
        {
            _repository = repository;
        }

        //
        // GET: /Dinner/

        public ActionResult Index()
        {
            var dinners = _repository.FindAllDinners();
            return View(dinners);
        }

        //
        // GET: /Dinner/Details/5

        public ActionResult Details(int id)
        {
            var dinner = _repository.GetDinner(id);
            return View(dinner);
        }

        //
        // GET: /Dinner/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Dinner/Create

        [HttpPost]
        public ActionResult Create(Dinner dinner)
        {
            try
            {
                // TODO: Add insert logic here
                _repository.AddDinner(dinner);
                _repository.UpdateDinner(dinner);

                return RedirectToAction("Index");
            }
            catch
            {
                return View(dinner);
            }
        }

        //
        // GET: /Dinner/Edit/5

        public ActionResult Edit(int id)
        {
            var dinner = _repository.GetDinner(id);
            return View(dinner);
        }

        //
        // POST: /Dinner/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {

            var db = new dbDataContext();
            var dinner = db.Dinners.SingleOrDefault(x => x.DinnerID == id);
            try
            {
                // TODO: Add update logic here
                UpdateModel(dinner, collection.ToValueProvider());
                _repository.UpdateDinner(dinner);
                return RedirectToAction("Index");
            }
            catch
            {
                return View(dinner);
            }
        }

        //
        // POST: /Dinner/Delete/5

        [HttpPost]
        public ActionResult Delete(int id)
        {
            var db = new dbDataContext();
            var dinner = db.Dinners.SingleOrDefault(x => x.DinnerID == id);
            try
            {
                // TODO: Add delete logic here
                _repository.DeleteDinner(dinner);
                _repository.UpdateDinner(dinner);
                return RedirectToAction("Index");
            }
            catch
            {
                return View(dinner);
            }
        }
    }
}
名称空间Nerddinner.Models
{
接口存储库
{
IQueryable findalldiners();
晚餐(intid);
晚餐(晚餐);
void updatediner(晚餐);
晚餐(晚餐);
}
}
名称空间Nerddinner.Models
{
公共类sqlDinnerRepository:idinerrepository
{
dbDataContext数据库;
公共sqlDinnerRepository()
{
db=新的dbDataContext();
}
公共可查询的FindAllDinners()
{
返回db.晚餐;
}
公共晚餐(int id)
{
返回db.Dinners.SingleOrDefault(x=>x.DinnerID==id);
}
公共晚餐(晚餐)
{
db.晚餐。InsertOnSubmit(晚餐);
}
公共空间更新器(晚餐)
{
db.SubmitChanges();
}
公共晚餐(晚餐)
{
db.dinters.deleteosubmit(晚餐);
}
}
}
命名空间Nerddinner.Controllers
{
公共类晚餐控制器:控制器
{
知识库(u repository);;
公共晚餐控制器()
{
_repository=new-sqlDinnerRepository();
}
公共晚餐控制器(IDinerRepository)
{
_存储库=存储库;
}
//
//吃晚饭/
公共行动结果索引()
{
var dinners=_repository.FindAllDinners();
返回视图(晚餐);
}
//
//获取/晚餐/详细信息/5
公共行动结果详细信息(int id)
{
var dinner=\u repository.GetDinner(id);
返回视图(晚餐);
}
//
//获取/晚餐/创建
公共操作结果创建()
{
返回视图();
} 
//
//POST:/晚餐/创建
[HttpPost]
公共行动结果创建(晚餐)
{
尝试
{
//TODO:在此处添加插入逻辑
_添加晚餐(晚餐);
_repository.updatediner(晚餐);
返回操作(“索引”);
}
抓住
{
返回视图(晚餐);
}
}
//
//获取/晚餐/编辑/5
公共操作结果编辑(int id)
{
var dinner=\u repository.GetDinner(id);
返回视图(晚餐);
}
//
//POST:/晚餐/编辑/5
[HttpPost]
公共操作结果编辑(int id,FormCollection集合)
{
var db=new dbDataContext();
var dinner=db.diners.SingleOrDefault(x=>x.DinnerID==id);
尝试
{
//TODO:在此处添加更新逻辑
UpdateModel(晚餐,collection.ToValueProvider());
_repository.updatediner(晚餐);
返回操作(“索引”);
}
抓住
{
返回视图(晚餐);
}
}
//
//POST:/晚餐/删除/5
[HttpPost]
公共操作结果删除(int id)
{
var db=new dbDataContext();
var dinner=db.diners.SingleOrDefault(x=>x.DinnerID==id);
尝试
{
//TODO:在此处添加删除逻辑
_储存库。删除晚餐(晚餐);
_repository.updatediner(晚餐);
返回操作(“索引”);
}
抓住
{
返回视图(晚餐);
}
}
}
}

谢谢您的帮助。

在ASP.NET MVC中,您可以在模型属性上使用DisplayFormat属性:

[DisplayFormat(DataFormatString = "{0:0.##}")]
public decimal decimalNumber { get; set; }
上面将输出一个最多有2位小数的数字。 欲了解更多信息,请访问:和

在SQL SERVER中: *小数点(m,a)*:m是小数点可包含的总位数,而a是小数点可包含的最大位数

所以如果你把π放进一个十进制数(18,0),它将被记录为3

如果你把圆周率转换成十进制(18,2),它将被记录为3.14

如果将圆周率转换为十进制(18,10),则记录为3.1415926535


我想我的回答对你有帮助。如果我错了,请纠正我。

请提供更多信息这是一种寻找就餐地点的解决方案。因此,该解决方案允许Administrator使用“经度”、“纬度”和“描述”等创建晚餐。除“经度”和“纬度”外,其他所有功能都运行良好。我在数据库中将它们定义为十进制(18,10)。和我的数据库模型的LINQ。当我试图在表格中输入这两个数字时,显示了“输入的数字无效”的错误。您是否包含任何客户端代码来格式化文本框?就像javascript用来格式化你的十进制数字:“485388.50”?亲爱的,谢谢你和我分享这些知识。但是我使用LINQ到SQL。没有数据库代码。亲爱的,如果你在哪里分享你的代码,我们可以帮助你。只有整体方案不能帮助任何stackoverflow用户。亲爱的,我已经把我的代码。我希望它能让你们理解我的解决方案。谢谢