ASP.NET Core: ApplicationUser имеет значение null при отправке формыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core: ApplicationUser имеет значение null при отправке формы

Сообщение Anonymous »

Я работаю над приложением ASP.NET Core, в котором пользователи могут добавлять адреса доставки. Этот процесс включает в себя запрос GET для отображения формы и запрос POST для обработки отправки формы. Несмотря на инициализацию ApplicationUser и ApplicationUserId в действии GET, во время запроса POST эти поля имеют значение NULL, что приводит к ошибке проверки.
Это соответствующий код:

Код: Выделить всё

[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 в действии GET и на то, что эти значения установлены в скрытых полях формы, я все равно получаю ошибка проверки в действии POST, указывающая на то, что поле ApplicationUser является обязательным.
При отладке я вижу, что ApplicationUser и ApplicationUserId в действии POST имеют значение NULL.

Поле ApplicationUser является обязательным

Что я пробовал:
  • Убедиться, что скрытые поля для ApplicationUser и ApplicationUserId правильно заполнены в представлении. .
  • Переназначение ApplicationUser и ApplicationUserId в действии POST после получения пользователя
Почему ApplicationUser имеет значение null в действии POST, несмотря на то, что оно задано в действии GET и включено в форму как скрытые поля? Как решить эту проблему, чтобы эти поля сохраняли свои значения во время отправки формы?

Подробнее здесь: https://stackoverflow.com/questions/788 ... submission
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»