من پروژه م رو با 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);
}
}
در این کلاس دو تابع هست. یکی برای تبدیل تاریخ میلادی به شمسی و دیگری برای تبدیل تاریخ شمسی به میلادی. از این دو تابع می تونید به راحتی در هر جایی از پروژه استفاده کنید.
تبدیل تاریخ میلادی به شمسی و بالعکس در سی شارپ
در لینک بالا به صورت کامل و به همراه مثال نحوه استفاده از این کلاس گفته شده.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
114
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
431
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1357
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
217
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
114
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
431
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1357
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|