Описание второго изображения
Когда я перехожу к представлению, я вижу, что некоторые входные поля asp-for имеют значение NULL, даже хотя они не равны нулю. В ViewModel ссылки с других моделей даны правильно, не знаю, где ошибка. Я пытаюсь получить некоторые данные, указанные в логине (имя, телефон и т. д.) в качестве вывода. Мои данные не отображаются на локальном хосте. Также мой раздел foreach не работает.
Контроллер:
Код: Выделить всё
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.VisualStudio.Web.CodeGenerators.Mvc.Templates.BlazorIdentity.Pages;
using NuGet.Protocol.Core.Types;
using Stripe.Climate;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using static NuGet.Packaging.PackagingConstants;
namespace JewelryWeb.Areas.Customer.Controllers
{
[Area("admin")]
public class OrderController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public OrderController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public IActionResult Index(string status)
{
IEnumerable objOrderHeaders = _unitOfWork.OrderHeader.GetAll(includeProperties: "ApplicationUser").ToList();
switch (status)
{
case "pending":
objOrderHeaders = objOrderHeaders.Where(u => u.PaymentStatus == SD.PaymentStatusDelayedPayment);
break;
case "inprocess":
objOrderHeaders = objOrderHeaders.Where(u => u.OrderStatus == SD.StatusInProcess);
break;
case "completed":
objOrderHeaders = objOrderHeaders.Where(u => u.OrderStatus == SD.StatusShipped);
break;
case "approved":
objOrderHeaders = objOrderHeaders.Where(u => u.OrderStatus == SD.StatusApproved);
break;
default:
break;
}
return View(objOrderHeaders);
}
public IActionResult Details(int orderId)
{
OrderVM orderVM = new()
{
OrderHeader = _unitOfWork.OrderHeader.Get(u => u.Id == orderId, includeProperties: "ApplicationUser"),
OrderDetail = _unitOfWork.OrderDetail.GetAll(u => u.OrderHeaderId == orderId, includeProperties: "Product")
};
return View(orderVM);
}
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jewelry.Models.ViewModels
{
public class OrderVM
{
public OrderHeader? OrderHeader { get; set; }
public IEnumerable ?OrderDetail { get; set; }
public Product ?Product { get; set; }
public ApplicationUser ?ApplicationUser { get; set; }
}
}
Код: Выделить всё
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jewelry.Models
{
public class OrderDetail
{
public int Id { get; set; }
[Required]
public int OrderHeaderId { get; set; }
[ForeignKey("OrderHeaderId")]
[ValidateNever]
public OrderHeader OrderHeader { get; set; }
[Required]
public int ProductId { get; set; }
[ForeignKey("ProductId")]
[ValidateNever]
public Product Product { get; set; }
public int Count { get; set; }
public double Price { get; set; }
}
}
Код: Выделить всё
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jewelry.Models
{
public class OrderHeader
{
public int Id { get; set; }
public string? ApplicationUserId { get; set; }
[ForeignKey("ApplicationUserId")]
[ValidateNever]
public ApplicationUser? ApplicationUser { get; set; }
public DateTime OrderDate { get; set; }
public DateTime ShippingDate { get; set; }
public double OrderTotal { get; set; }
public string? OrderStatus { get; set; }
public string? PaymentStatus { get; set; }
public string? TrackingNumber { get; set; }
public string? Carrier { get; set; }
public DateTime PaymentDate { get; set; }
public DateOnly PaymentDueDate { get; set; }
public string? SessionId { get; set; }
public string? PaymentIntentId { get; set; }
[Required]
public string? PhoneNumber { get; set; }
[Required]
public string? StreetAddress { get; set; }
[Required]
public string? City { get; set; }
[Required]
public string? State { get; set; }
[Required]
public string? PostalCode { get; set; }
[Required]
public string? Name { get; set; }
[Required]
public int PostalCode1 { get; set; }
}
}
Код: Выделить всё
@model OrderVM
[i][/i] Order Summary
Back to Orders
[h4]
PickUp Details:
[/h4]
Name
@if(User.IsInRole(SD.Role_Admin))
{
}
else{
}
Phone
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
Address
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
City
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
State
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
Zip Code
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
Email
Order Date
Carrier
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
Tracking
@if (User.IsInRole(SD.Role_Admin))
{
}
else
{
}
Shipping Date
@if (User.IsInRole(SD.Role_Admin))
{
Session ID
Payment Intent ID
}
@if(Model.OrderHeader?.SessionId == null)
{
Payment Due Date
}
else{
Payment Date
}
Payment Status
[h4]
Order Summary
[/h4]
Order Status - @Model.OrderHeader?.OrderStatus
[list]
@foreach (var detail in Model.OrderDetail)
{
[*]
@detail.Product.Title
Price : @detail.Price.ToString("c")
Quantity : @detail.Count
@((detail.Count * detail.Price).ToString("c"))
}
[*]
TOTAL
@Model.OrderHeader?.OrderTotal.ToString("c")
[/list]
Подробнее здесь: https://stackoverflow.com/questions/786 ... -for-input