处理请求时发生未处理的异常 ArgumentNullException:值不能为null 参数“值”

问题描述

我在Razor页面中遇到此问题:

Exception

我的OnPost:

public IActionResult OnPost()
    {
        if (!ModelState.IsValid)
            return Page();
        //Todo Add Permission
        Role.IsDelete = false;
        int roleId = _permissionService.AddRole(Role);
        return RedirectToPage("Index");
    }

我的方法

public int AddRole(Role role)
    {
        _context.Roles.Add(role);
        _context.SaveChanges();
        return role.RoleId;
    }

和MyTable:

[Key]
    public int RoleId { get; set; }

    [display(Name = "")]
    [required(ErrorMessage = "لطفا {0} را وارد کنید!!!")]
    [MaxLength(50,ErrorMessage = "{0} نمیتواند بیشتر از {1} کاراکتر باشد!!!")]
    public string RoleName { get; set; }

    public bool IsDelete { get; set; }

解决方法

问题是您将DisplayAttribute.Name设置为空字符串-错误本身是误导的 bit ,因为它不是null,而是用string.IsNullOrEmpty here

检查

因此,要么将其设置为非空字符串,要么完全删除属性(没有值就没有值,因此是例外!),它应该可以工作。

顺便说一句,您应该从异常中读取堆栈跟踪,而不仅仅是消息-它提供了上下文以及开始查找问题的具体位置。