Ошибка: значение не может быть нулевым. Имя параметра: источник - PullRequest
1 голос
/ 10 апреля 2020

Я новичок в программировании, я пытаюсь создать торговый сайт, как пользователи продают свои продукты.

У меня есть продукты и таблица пользователя. В таблице продуктов есть столбец «userId», на который ссылается «ID» в таблице пользователя. Только зарегистрированные пользователи могут добавлять продукт, и я хочу показать продукты в профиле каждого пользователя, которого они добавили. Мой код ниже.

Но вот ошибка: значение не может быть нулевым. Имя параметра: источник.

Что не так с этим кодом или есть какой-либо другой способ сделать это.

Мой взгляд:

<section class="page-section" id="relatedprod">
<div class="container">
<div class="row middle">
 @foreach (Product prd in Model.Prod.Where(i=>i.userid==Model.userr.ID))
 {
 <div class="col-md-4">
 <figure class="card card-product mehsul">
<div class="img-wrap"> <img class="img-fluid mehsulimg" src="~/PublicFront/images/30off6ec8.jpg" alt=""> </div>
<div class="handhover">
<img class="img-fluid" src="~/PublicFront/images/serv2b712.jpg" alt="">
</div>
 <figcaption class="info-wrap">
  <h4 class="title">@prd.ProdName</h4>
  <p class="@prd.Price"></p>
</figcaption>
  <div class="bottom-wrap">
  <a href="" class="btn btn-sm btn-primary float-right">Order Now</a>
<div class="price-wrap h5">
<span class="price-new">$1280</span> <del class="price-old">$1980</del>
</div> <!-- price-wrap.// -->
</div> <!-- bottom-wrap.// -->
</figure>
 </div> <!-- col // -->
  }
 </div>
 </div>
</section>

Контроллер

public ActionResult MainAccount(int?id)
{
User us = Session["ActiveUser"] as User;
var vm = new HMViewM()
{
homesec1 = _context.homesec1slider.ToList(),
userr=us,
};
return View(vm);
 }
namespace HandMShop.ViewModel

{Модели:

public class HMViewM
{
    public List<homesec1slider> homesec1 { get; set; }
    public User userr { get; set; }
    public  List<Category>  catg { get;set; }
    public List<Colour> colrs { get; set; }
  public List<PhotoProduct> Photopr { get; set; }
    public List<Product> Prod { get; set; }
}
}

public partial class Product
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Product()
    {
        this.PhotoProducts = new HashSet<PhotoProduct>();
    }

    public int id { get; set; }
    public string ProdName { get; set; }
    public string Price { get; set; }
    public string Discount { get; set; }
    public Nullable<int> CategoryId { get; set; }
    public Nullable<int> AvailableID { get; set; }
    public string Description { get; set; }
    public string Material { get; set; }
    public Nullable<byte> Enable { get; set; }
    public Nullable<int> userid { get; set; }
    public Nullable<System.DateTime> prodpostDate { get; set; }
    public string ProdGenderId { get; set; }
    public string sifarishle { get; set; }
    public Nullable<int> LanguageId { get; set; }
    public Nullable<int> colourId { get; set; }
    public string Olcusu { get; set; }

    public virtual AvailableTb AvailableTb { get; set; }
    public virtual Category Category { get; set; }
    public virtual Colour Colour { get; set; }
    public virtual LanguageTb LanguageTb { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<PhotoProduct> PhotoProducts { get; set; }
    public virtual User User { get; set; }
}
}

Debug result

1 Ответ

1 голос
/ 11 апреля 2020

Ладно, похоже, ваше свойство списка товаров пусто, используйте приведенный ниже код, чтобы заполнить его.

public ActionResult MainAccount(int?id)
{
   User us = Session["ActiveUser"] as User;

   // add Prod = _context.Product.Where(p=>p.User.ID == us.ID).ToList()
   var vm = new HMViewM()
   {
      homesec1 = _context.homesec1slider.ToList(),
      userr = us,
      Prod = _context.Product.Where(p=>p.User.ID == us.ID).ToList()
   };

   return View(vm);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...