简体   繁体   English

“值不能是 null。 参数名称:source”,同时在视图中从连接表中添加项目

[英]“Value cannot be null. Parameter name: source” while add item from connected table in View

in my project i have Two table: Restaurant(RestaurantId, Name, ...., Adress) and RestaurantReviews(ReviewsId, Mark, ...., RestaurantId).在我的项目中,我有两个表:Restaurant(RestaurantId, Name, ...., Adress) 和 RestaurantReviews(ReviewsId, Mark, ...., RestaurantId)。 In my PartialView i try show Restaurant info and calculate Average Mark, but if i try calculate Average i getting error:在我的 PartialView 中,我尝试显示餐厅信息并计算平均分数,但如果我尝试计算平均值,则会出现错误:

ArgumentNullException: Value cannot be null. (Parameter 'source')

RestaurantModel餐厅模特

public class Restaurant
  {
    [Key]
    public int RestaurantId{ get; set; }

    ....

    [Required(ErrorMessage = "Restaurant name is empty")]
    public string Name{ get; set; }

    ....

    public virtual ICollection<RestaurantReviews> RestaurantReviews{ get; set; }

RestaurantReviewsModel餐厅评论模型

public class RestaurantReviews
  {
    [Key]
    public int RestaurantReviewsId { get; set; }

    ....

    [Required(ErrorMessage = "Restaurant mark is empty")]
    public int Mark{ get; set; }

    [ForeignKey("Restaurant")]
    public int RestaurantId { get; set; }

    public virtual  Restaurant Restaurant {get; set; }

DbContext数据库上下文

 public DbSet<Restaurant> Restaurant { get; set; }
 public DbSet<RestaurantReviews> RestaurantReviews{ get; set; }

Called PartialViews称为部分视图

@await Html.PartialAsync("~/Views/Restaurant/RestaurantWidget.cshtml", (IEnumerable<Firma.Data.Data.CMS.Restaurant>)ViewBag.RestaurantWidget)

RestaurantWidget.cshtml RestaurantWidget.cshtml

@model IEnumerable<Firma.Data.Data.CMS.Restaurant>


@foreach (var item in Model)
{
    ...
    @item.Name
    ...

    //Without this line everything is ok
    @item.RestaurantReviews.Average(x=>x.Mark)
    //Without this line everything is ok

   ...
}

Controller Controller

public IActionResult Index()
  {
     ViewBag.RestaurantWidget=
        (
           from restaurant in _context.Restaurant
           select restaurant 
           ).Take(5).ToList();
        return View();
  }

Additional info: Each restaurant has at least one rating.附加信息:每家餐厅至少有一个评级。 There is no restaurant that would not have any rating没有一家餐厅不会有任何评分

I find answer to my question, in Controller i change我找到了我的问题的答案,在Controller我改变

public IActionResult Index()
  {
     ViewBag.RestaurantWidget=
        (
           from restaurant in _context.Restaurant
           select restaurant 
           ).Take(5).ToList();
        return View();
  }

to code below在下面编码

ViewBag.RestaurantWidget= _context.Restaurant.Include(p=>p.RestaurantReviews).Take(4).ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 "<i>Value cannot be null.<\/i>值不能为空。<\/b> <i>Parameter name: source<\/i>参数名称:来源<\/b>" - Value cannot be null. Parameter name: source 使用LINQ在List中查找项目但获取“Value不能为null。 参数名称:source“ - Using LINQ to find item in a List but get “Value cannot be null. Parameter name: source” 值不能为空。 参数名称:Asp.net中的源 - Value cannot be null. Parameter name: source in Asp.net 如何解决 Value 不能为 null。 参数名称:linq 中的源? - How to resolve Value cannot be null. Parameter name: source in linq? 值不能为空。 参数名称:测试模拟时的来源 - Value cannot be null. Parameter name: source at when test mock Azure 函数:值不能为空。 参数名称:来源 - Azure function: Value cannot be null. Parameter name: source Blazor + MongoDb 标识:值不能是 null。 (参数名称“来源”) - Blazor + MongoDb Identity: Value cannot be null. (Parameter name 'source') 添加迁移值不能为空。 参数名称:语言 - Add-Migration Value cannot be null. Parameter name: language 值不能为null。参数名称:String - Value cannot be null. Parameter name: String 值不能为空。 参数名称:路径 - Value cannot be null. Parameter name: path
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM