رفع خطای Input string was not in a correct format
من پروژه م رو با Asp.net core 5 نوشتم فیلد تاریخ رو توی ویو مدلم به این شکل تعریف کردم
[Display(Name = "تاریخ تولد")]
[Required(AllowEmptyStrings = false, ErrorMessage = "{0} وارد نشده است.")]
public DateTime borndate { get; set; }
توی ویو هم به این شکل
<div class="col-12" data-MdDateTimePicker="true" data-trigger="click" data-targetselector="#exampleInput4">
<label asp-for="borndate">تاریخ تولد*</label>
<input asp-for="borndate" data-trigger="click" id="exampleInput4" type="text" class="form-control" data-mddatetimepicker="true" value="1400/01/01" data-placement="right" />
<span asp-validation-for="borndate" class="text-danger"></span>
</div>
توی قسمت کنترلر هم به اکشنم رو به این شکل نوشتم قبلا از این که datapicker بزارم این کد درست کار می کرد اما الان با خطای
Input string was not in a correct format مواجه میشم ( این کد خلاصه شده ست و من فقط قسمت مربوطه رو گذاشتم)
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreatePersonIdentityInfo(string borndate,string birthcertificatedate)
{
PersonIdentityInfo info = new PersonIdentityInfo();
PersianCalendar persianCalendar = new PersianCalendar();
info.BornDate = persianCalendar.ToDateTime(Convert.ToInt32(borndate.Split('/')[0]), Convert.ToInt32(borndate.Split('/')[1].ToString()),Convert.ToInt32(borndate.Split('/')[2].ToString()), 0, 0, 0, 0);
info.BirthCertificateDate = persianCalendar.ToDateTime(Convert.ToInt32(birthcertificatedate.Split('/')[0].ToString()), Convert.ToInt32(birthcertificatedate.Split('/')[1].ToString()), Convert.ToInt32(birthcertificatedate.Split('/')[2].ToString()), 0, 0, 0, 0);
_context.PersonIdentityInfos.Add(info);
}
return RedirectToAction("Index");
}
خطا مربوط به این خط هست
info.BornDate = persianCalendar.ToDateTime(Convert.ToInt32(borndate.Split('/')[0]), Convert.ToInt32(borndate.Split('/')[1].ToString()),Convert.ToInt32(borndate.Split('/')[2].ToString()), 0, 0, 0, 0);
چند تا نکته رو در رابطه سوالتون میگم. شما فیلد تاریخ رو از نوع DateTime تعریف کردید. و در اکشن هم برای دریافت مقدار تاریخ از string استفاده کردید. تا اینجا درست هست.
در این مرحله یک Breakpoint روی اکشن خودتون قرار بدید و مطمئن بشید که مقدار تاریخ به صورت string به اکشن شما ارسال شده.
خب حالا شما باید مقدار تاریخ دریافت شده به صورت string رو به صورت DateTime تبدیل کنید. برای این منظور یک کلاس ایجاد کنید و کد زیر رو داخلش کپی و پیست کنید :
using MD.PersianDateTime.Core;
using System;
public static class ConvertDateTime
{
public static DateTime ConvertShamsiToMiladi(string date)
{
PersianDateTime persianDateTime = PersianDateTime.Parse(date);
return persianDateTime.ToDateTime();
}
public static string ConvertMiladiToShamsi(this DateTime? date, string format)
{
PersianDateTime persianDateTime = new PersianDateTime(date);
return persianDateTime.ToString(format);
}
}
در این کلاس دو تابع هست. یکی برای تبدیل تاریخ میلادی به شمسی و دیگری برای تبدیل تاریخ شمسی به میلادی. از این دو تابع می تونید به راحتی در هر جایی از پروژه استفاده کنید.
تبدیل تاریخ میلادی به شمسی و بالعکس در سی شارپ
در لینک بالا به صورت کامل و به همراه مثال نحوه استفاده از این کلاس گفته شده.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2