Я не могу получить данные из модели представления в ASP.NET Core MVC. На мой взгляд, мои значения для «input-asp-for» выC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я не могу получить данные из модели представления в ASP.NET Core MVC. На мой взгляд, мои значения для «input-asp-for» вы

Сообщение Anonymous »


Когда я перехожу к представлению, Я вижу, что некоторые входные поля 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);
}
}
}
ViewModel:

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

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; }
}
}
Модель OrderDetail:

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

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; }
}
}
Модель OrderHeader:

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

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]   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]











Я попытался объявить некоторые поля обнуляемыми и добавил новую миграцию, но ничего не изменилось. Я ожидал, что это исправят, и еще поискал базу данных SQL, значения там появляются. Это не ноль.

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

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

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

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

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

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

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