.Net Core3.1 WebApi 传参数dynamic类型,直接使用解析报错解决方法

从 Net 4.5版本  迁移至NetCore3.1时,WebApi中直接dynamic传参,使用会报错,错误信息如下:  {"'System.Text.Json.JsonElement' does not contain a definition for 'LoginName'"}    System.Exception {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}

而 在Net 4.5版本版本下不会报错,使用正常。报错代码如下:

#region AddUser
        /// <summary>
        /// 更新用户信息
        /// </summary>
        /// <returns></returns>
        [Route("Company/AddUser")]
        [HttpPost]
        public string AddUser(dynamic objdyn)
        {
            string json = "";
            LogHelper log = LogHelper.GetInstance();
            try
            {
                CUserInfo cui = new CUserInfo();
                CUserInfoBase xbase = new CUserInfoBase();
             

                xbase.LoginName = Convert.ToString(objdyn.LoginName);
                bool checkflag = cui.CheckLoginName(xbase.LoginName);
                if (checkflag)
                {
                    xbase.Password = StrHelper.PwdMD5(Convert.ToString(objdyn.Password));
                    xbase.UserName = Convert.ToString(objdyn.UserName);
                    xbase.Telephone = Convert.ToString(objdyn.Telephone);
                    xbase.Email = Convert.ToString(objdyn.Email);
                    xbase.Sex = Convert.ToByte(objdyn.Sex);
                    xbase.State = Convert.ToByte(objdyn.State);
                    xbase.UserType = Convert.ToByte(objdyn.UserType);
                    xbase.SalesmanId = Convert.ToInt32(objdyn.SalesMan);
                    xbase.CompanyId = Convert.ToInt32(objdyn.Company);
                    xbase.AddTime = DateTime.Now;
                    xbase.Memo = Convert.ToString(objdyn.Memo);

                    int flag = cui.Add(xbase);
                    if (flag > 0)
                    {
                        json = CFormatJson.HttpResult("0", "添加成功", null);
                    }
                    else
                    {
                        json = CFormatJson.HttpResult("1", "操作失败", null);
                    }
                }
                else
                {
                    json = CFormatJson.HttpResult("2", "登录名重复", null);
                }
            }
            catch (Exception ex)
            {
                log.WriteErrorLog("Company/AddUser-" + ex.Message);
                json = CFormatJson.HttpResult("1", "系统异常:" + ex.Message, null);
            }

            return json;
        }
        #endregion

 

解决方案如下:

增加转换一下即可使用:

dynamic objdyn = JsonConvert.DeserializeObject(Convert.ToString(obj));
string name=objdyn.LoginName;

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值