【问题标题】:.net core MVC TryUpdateModelAsync passed expression of expression node type 'NewArrayInit' is invalid.net 核心 MVC TryUpdateModelAsync 传递的表达式节点类型 \'NewArrayInit\' 的表达式无效
【发布时间】:2023-01-12 11:10:36
【问题描述】:

当我使用 TryUpdateModelAsync 方法更新模型时出现此错误,任何人都对此有想法

传递的表达式节点类型“NewArrayInit”的表达式无效。仅支持模型属性的简单成员访问表达式。

这个问题的代码如下。

 [HttpPost,ActionName("Edit")]
 [ValidateAntiForgeryToken]
 public async Task<ActionResult> EditLocaton([ModelBinder(typeof(EncryptDataBinder))]int id, IFormCollection formCollection)
 {
 ModelState.Clear();
 LocationModel location = new LocationModel();
 try
 {
 await TryUpdateModelAsync<LocationModel>(location, "", p => new object[] { p.ID, p.Name, p.Code, p.RowVersion });

位置模型的代码

public class LocationModel : BaseEntity
    { 
        [Required]
        [StringLength(100)]
        [Display(Name = "Location Name")] 
        public string Name { get; set; }
        [Required]
        [StringLength(20)]
        public string Code { get; set; }
        [NotMapped]
        public string enID { get; set; }
    }

请帮助解决这个问题。

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    这是 TryUpdateModelAsyncsample

    var studentToUpdate = await _context.Students.FirstOrDefaultAsync(s => s.ID == id);
        if (await TryUpdateModelAsync<Student>(
            studentToUpdate,
            "",
            s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
        {
            try
         ...
    

    它使用传入请求中提供的数据更新studentToUpdate

    所以恐怕你可以试试await TryUpdateModelAsync&lt;LocationModel&gt;(location, "", p =&gt; p.enID, p =&gt; p.Name, p =&gt; p.Code);。在你的代码 sn-p 中,我在你的 LocationModel 中找不到 RowVersion ,我不确定。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多