0

decimal(18,10)データベースで経度と緯度のデータ型を定義しました。 しかし、フォームを入力して送信しようとすると、常に「検証エラー」と表示されました。使用しLINQ to SQLました。私のために生成された検証ルールがいくつかありますか?それ以外の場合、「2.34」のような数字でこれら2つを入力できないのはなぜですか?

前もって感謝します

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);
            }
        }
    }
}

私を助けてくれてありがとう。

4

1 に答える 1

1

ASP.NET MVCでは、モデル プロパティで DisplayFormatAttribute を使用できます。

[DisplayFormat(DataFormatString = "{0:0.##}")]
public decimal decimalNumber { get; set; }

上記は、小数点以下2桁までの数値を出力します。詳細については、カスタム数値書式文字列および標準数値書式文字列を参照してください。

IN SQL SERVER: * decimal(m,a) *: m は 10 進数の合計桁数で、a は小数点の最大数です。

したがって、PI を Decimal(18,0) に入れると、3 として記録されます。

PI を 10 進数 (18,2) にすると、3.14 として記録されます。

PI を Decimal(18,10) に入れると、3.1415926535 として記録されます。

私の答えがあなたを助けると思います。私が間違っている場合は修正してください。

于 2013-05-25T10:31:20.477 に答える