نمایش نتایج 1 تا 13 از 13

نام تاپیک: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

  1. #1

    دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    سلام. وقت بخیر
    من تو view برنامم، یه فیلد دارم که نوعش float هست. وقتی مقدار اعشاری مثلا 2.5 رو بهش میدم و دکمه ذخیره رو میزنم، مقدار این فیلد در کنترلر 0.0 میاد.
    چطور میشه رفعش کرد؟

    public float Tax { get; set; }

    @Html.TextBoxFor(model => model.Tax, new { @class = "form-control text-center", lang = "en" })



    اگر مقدار فیلد رو عدد صحیح وارد کنم (مثلا 9) مشکلی نداره اما با اعشار مشکل داره
    آخرین ویرایش به وسیله resident : شنبه 30 بهمن 1395 در 18:37 عصر

  2. #2

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    از double استفاده کنید : http://stackoverflow.com/a/4681503/6661314

  3. #3

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    از double استفاده کنید : http://stackoverflow.com/a/4681503/6661314
    با دابل هم دقیقا همین وضعیت رو داره

    مشکلش چیه به نظرتون؟

  4. #4

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    اگر امکانش هست کد کنترلرتون رو قرار بدید .

  5. #5

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    اگر امکانش هست کد کنترلرتون رو قرار بدید .
    MyModel:
     public float Tax { get; set; }


    ویو:
      @Html.TextBoxFor(model => model.Tax, new { @class = "form-control text-center", lang = "en" })

    کنترلر:

    [HttpPost]

    public ActionResult Create(MyModel entity)
    {

    RepositoryObject.Insert(entity);
    }


    تو کنترلر کد خاصی نیست.

  6. #6

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر


  7. #7

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    ممنون از توضیحتون
    ولی متاسفانه متوجه نشدم چکار باید کنم.
    امکانش هست بیشتر راهنماییم کنید؟

  8. #8

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    از این Model Binder داخل پروژتون استفاده کنید :


    public class DecimalModelBinder : IModelBinder
    {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
    var valueResult = bindingContext.ValueProvider
    .GetValue(bindingContext.ModelName);
    var modelState = new ModelState { Value = valueResult };
    object actualValue = null;
    try {
    actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
    }
    catch (FormatException e) {
    modelState.Errors.Add(e);
    }

    bindingContext.ModelState.Add(bindingContext.Model Name, modelState);
    return actualValue;
    }
    }


    و در Global.asax :


    ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());


    bindingContext.ValueProvider.GetValue به طور پیشفرض Integer برمیگردونه و شما با استفاده از این Model Binder اون رو به Decimal تغییر میدید.

    این مطلب + کامنت هاش رو به دقت بخونید ، متوجه مشکل میشید : http://stackoverflow.com/a/33711121/6661314

  9. #9

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    از این Model Binder داخل پروژتون استفاده کنید :


    public class DecimalModelBinder : IModelBinder
    {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
    var valueResult = bindingContext.ValueProvider
    .GetValue(bindingContext.ModelName);
    var modelState = new ModelState { Value = valueResult };
    object actualValue = null;
    try {
    actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
    }
    catch (FormatException e) {
    modelState.Errors.Add(e);
    }

    bindingContext.ModelState.Add(bindingContext.Model Name, modelState);
    return actualValue;
    }
    }


    و در Global.asax :


    ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());


    bindingContext.ValueProvider.GetValue به طور پیشفرض Integer برمیگردونه و شما با استفاده از این Model Binder اون رو به Decimal تغییر میدید.

    این مطلب + کامنت هاش رو به دقت بخونید ، متوجه مشکل میشید : http://stackoverflow.com/a/33711121/6661314
    از اینکه با صبر و حوصله جواب میدید ممنونم/

    من این کار رو انجام داده بودم. Model Binder ام رو با Model Binder شما عوض کردم اما یاز هم تغییری حاصل نشد

  10. #10

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    trace کردم
    روی کد Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture) خطا میده.
    valueResult.AttemptedValue مقدار داره اما کل فانکشن خطا میده.


    یه سوال دیگه این برای decimal هست. برای float و double چکار کنم؟

  11. #11

    Thumbs up نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    احتمالا در کدتون مشکلی هست چون چندجا با این کد دیدم که مشکل رفع شده ، عینا با این جلو برید ( خواندن کامنت ها فراموش نشه ) : http://haacked.com/archive/2011/03/1...decimals.aspx/

    یه سوال دیگه این برای decimal هست. برای float و double چکار کنم؟
    جای استفاده از Convert.ToDecimal از Convert.ToDouble و Convert.ToSingle استفاده کنید.

  12. #12

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    احتمالا در کدتون مشکلی هست چون چندجا با این کد دیدم که مشکل رفع شده ، عینا با این جلو برید ( خواندن کامنت ها فراموش نشه ) : http://haacked.com/archive/2011/03/1...decimals.aspx/


    جای استفاده از Convert.ToDecimal از Convert.ToDouble و Convert.ToSingle استفاده کنید.
    ممنون با کامنت ها درست شد.
    از راهنمایی هاتون تشکر میکنم

  13. #13
    کاربر دائمی آواتار moslem.hady
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    پشت میز کامپیوتر
    سن
    34
    پست
    661

    نقل قول: دریافت مقدار صفر برای مقادیر اعشاری در کنترلر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    از این Model Binder داخل پروژتون استفاده کنید :


    public class DecimalModelBinder : IModelBinder
    {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
    var valueResult = bindingContext.ValueProvider
    .GetValue(bindingContext.ModelName);
    var modelState = new ModelState { Value = valueResult };
    object actualValue = null;
    try {
    actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
    }
    catch (FormatException e) {
    modelState.Errors.Add(e);
    }

    bindingContext.ModelState.Add(bindingContext.Model Name, modelState);
    return actualValue;
    }
    }


    و در Global.asax :


    ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());


    bindingContext.ValueProvider.GetValue به طور پیشفرض Integer برمیگردونه و شما با استفاده از این Model Binder اون رو به Decimal تغییر میدید.

    این مطلب + کامنت هاش رو به دقت بخونید ، متوجه مشکل میشید : http://stackoverflow.com/a/33711121/6661314
    برای دوستانی که ممکنه در آینده به این مشکل بخوردن، من مشکل رو با کد بالا و با یه تغییر کوچیک موقتا اصلاح کردم.:

     actualValue = Convert.ToDecimal(valueResult.AttemptedValue.Repla  ce("/","."), CultureInfo.CurrentCulture);

    چون عدد پست شده بصورت 123/45 بود و این خط به خطا میخورد، یه ریپلیس زدم که اصلاح بشه

    روش بهتر کسی میدونه اطلاع رسانی کنه.

تاپیک های مشابه

  1. پاسخ: 13
    آخرین پست: دوشنبه 09 بهمن 1391, 12:05 عصر
  2. سوال: مشكل با مقادير اعشاري در كريستال
    نوشته شده توسط ebrahimv در بخش VB.NET
    پاسخ: 2
    آخرین پست: چهارشنبه 31 فروردین 1390, 23:35 عصر
  3. دریافت مقدار یک کنترل html ی در سمت سیشارپ در ASp.net
    نوشته شده توسط آرام جان گل در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: چهارشنبه 12 خرداد 1389, 19:12 عصر
  4. مقدار اولیه برای یک پارامتر در sp
    نوشته شده توسط majid325 در بخش SQL Server
    پاسخ: 8
    آخرین پست: سه شنبه 08 اسفند 1385, 17:28 عصر
  5. مقدار صفر برای داده های Null
    نوشته شده توسط مرادعلی در بخش Access
    پاسخ: 1
    آخرین پست: شنبه 07 آبان 1384, 15:15 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •