asp.net mvc, lagt till user info

Trädvy Permalänk
Medlem
Plats
Piteå
Registrerad
Okt 2004

asp.net mvc, lagt till user info

Jag har lagt till några saker vid registrering, allting fungerar som det ska förutom Birthday, jag får rätt datum men jag får även klockslaget 00:00, som jag inte vill ha när jag hämtar infon till min view

RegisterViewmodel i AccountViewModel:

[Display(Name= "Day")] public int Day { get; set; } [Display(Name = "Month")] public int Month { get; set; } [Display(Name = "Year")] public int Year { get; set; } [Required] [DataType(DataType.Date)] [Display(Name = "Birthday")] public DateTime Birthday { get; set; }

i registerview har jag alltså 3 dropdownlists en för dag, månad och år.

AccountController:

[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (model.Year == 0 || model.Month == 0 && model.Day == 0) { ModelState.AddModelError("Birthday", "Date of birth is required"); } else { DateTime dt = new DateTime(model.Year, model.Month, model.Day); model.Birthday = dt; } if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Birthday=model.Birthday}; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); return RedirectToAction("Index", "Home"); } AddErrors(result); } return View(model); }

ManageController: (Det relevanta i fet text)

public async Task<ActionResult> Index(ManageMessageId? message) { var userId = User.Identity.GetUserId(); var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); var currentUser = manager.FindById(User.Identity.GetUserId()); ViewBag.CurrentUser = currentUser; var model = new IndexViewModel { HasPassword = HasPassword(), Logins = await UserManager.GetLoginsAsync(userId), BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId), Birthday = currentUser.Birthday.ToString() }; return View(model); }

Min View som ger mig tex: 1900-01-01 00:00:00

@ViewBag.CurrentUser.Birthday

jag har provat Birthday = currentUser.Birthday.ToString(yyyymmdd) etc men ingen skillnad i resultat, så jag undrar om ni har något förslag på hur jag kan gå tillväga?

CPU: AMD Ryzen 1700x @ 3.8GHz || Mem: 16GB Corsair LPX 3000mhz || Mobo: Asus x370 Prime || GPU: EVGA Geforce GTX1070 SC || SSD: WD black 500GB m2 || OS: Linux Mint/Win 10 || Monitor: Dell 43" 4K P4317Q

Citera om du vill ha svar :)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2009

Birthday.ToShortDateString()

Som referens:

void Main() { var datum = DateTime.Now; Console.WriteLine(datum.ToShortDateString()); }

Resultat: 2016-01-20

7900x @ 4,7ghz - 1080ti @ 2100

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Jan 2006

Om jag inte minns fel så borde detta fungera på model/properties.
Typ nåt sånt här:

[Required] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] [Display(Name = "Birthday")] public DateTime Birthday { get; set; }

Har dock inte testat av men borde fungera.

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Trädvy Permalänk
Medlem
Plats
Piteå
Registrerad
Okt 2004
Skrivet av celoz:

Birthday.ToShortDateString()

Som referens:

void Main() { var datum = DateTime.Now; Console.WriteLine(datum.ToShortDateString()); }

Resultat: 2016-01-20

provade det innan jag postade också men fick samma resultat

Skrivet av NoPaiN^:

Om jag inte minns fel så borde detta fungera på model/properties.
Typ nåt sånt här:

[Required] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] [Display(Name = "Birthday")] public DateTime Birthday { get; set; }

Har dock inte testat av men borde fungera.

Kom på lösningen.... i min view

@ViewBag.CurrentUser.Birthday.ToString("yyy-MM-dd")

Fungerade ypperligt

CPU: AMD Ryzen 1700x @ 3.8GHz || Mem: 16GB Corsair LPX 3000mhz || Mobo: Asus x370 Prime || GPU: EVGA Geforce GTX1070 SC || SSD: WD black 500GB m2 || OS: Linux Mint/Win 10 || Monitor: Dell 43" 4K P4317Q

Citera om du vill ha svar :)