Это соответствующий код:
Код: Выделить всё
[HttpGet]
public async Task AddAddress()
{
var user = await _um.GetUserAsync(User);
if (user == null)
{
TempData["Error"] = "User not found.";
return RedirectToAction("DisplayDeliveryAddress");
}
DeliveryAddress address = new DeliveryAddress
{
ApplicationUserId = user.Id,
ApplicationUser = user
};
return View(address);
}
Код: Выделить всё
[HttpPost]
public async Task AddAddress(DeliveryAddress addressModel)
{
var user = await _um.GetUserAsync(User);
if (user == null)
{
TempData["Error"] = "User not found.";
return RedirectToAction("DisplayDeliveryAddress");
}
// Reassign the user and user ID to the address model
addressModel.ApplicationUserId = user.Id;
addressModel.ApplicationUser = user;
if (ModelState.IsValid)
{
try
{
_db.Addresses.Add(addressModel);
await _db.SaveChangesAsync();
TempData["Success"] = "New delivery address is registered!";
return RedirectToAction("DisplayDeliveryAddress");
}
catch (Exception e)
{
TempData["Error"] = "An error occurred while adding the address.";
return View(addressModel);
}
}
else
{
TempData["Error"] = "Please correct the errors and try again.";
}
return View(addressModel);
}
Код: Выделить всё
@model DeliveryAddress
@{
ViewBag.Title = "Add Address";
Layout = "_Layout";
}
@if (TempData["Success"] != null)
{
@TempData["Success"]
}
@if (TempData["Error"] != null)
{
@TempData["Error"]
}
Add Address
Cancel
Код: Выделить всё
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace OnlineShop.Models
{
public class DeliveryAddress
{
public int Id { get; set; }
[Required]
[Display(Name = "Country/region")]
public string Country { get; set; }
[Required]
[Display(Name = "Contact name")]
public string Contactname { get; set; }
[Required]
[Display(Name = "Contact phone number")]
public string Phone { get; set; }
[Required]
[Display(Name = "Street")]
public string Street { get; set; }
[Required]
[Display(Name = "Post sted")]
public string Sted { get; set; }
[Required]
[Display(Name = "City")]
public string City { get; set; }
[Required]
[Display(Name = "Zip code")]
public string ZipCode { get; set; }
public string ApplicationUserId { get; set; } // Foreign key
public ApplicationUser ApplicationUser { get; set; } // Reference navigation
}
}
При отладке я вижу, что ApplicationUser и ApplicationUserId в действии POST имеют значение NULL.
Поле ApplicationUser является обязательным
Что я пробовал:
- Убедиться, что скрытые поля для ApplicationUser и ApplicationUserId правильно заполнены в представлении. .
- Переназначение ApplicationUser и ApplicationUserId в действии POST после получения пользователя
Подробнее здесь: https://stackoverflow.com/questions/788 ... submission