zoukankan      html  css  js  c++  java
  • .net core 3.1 mvc string接收为null解决方案

    多参数传值,string为null解决

    1、添加类

    public class CustomMetadataProvider : IMetadataDetailsProvider, IDisplayMetadataProvider
        {
            public void CreateDisplayMetadata(DisplayMetadataProviderContext context)
            {
    
                if (context.Key.MetadataKind == ModelMetadataKind.Property
                    || context.Key.MetadataKind == ModelMetadataKind.Parameter
                    || context.Key.MetadataKind == ModelMetadataKind.Type)
                {
    
                    context.DisplayMetadata.ConvertEmptyStringToNull = false;
                }
            }
        }
    

    2、注册类

    services.AddControllersWithViews(options => options.ModelMetadataDetailsProviders.Add(new CustomMetadataProvider()))
    

      

    对象传值,string为null

    1、修改3.1默认的json

    //services.AddMvc().AddJsonOptions(options =>
                //{
                //    options.JsonSerializerOptions.PropertyNamingPolicy = null;
                //});
    
    
                services.AddMvc(options =>
                {
                    options.EnableEndpointRouting = false;
                }).SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
                .AddNewtonsoftJson(options =>
                {
              // 自定义的返回处理 options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat; options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; options.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include; options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); options.SerializerSettings.ConstructorHandling = Newtonsoft.Json.ConstructorHandling.Default; options.SerializerSettings.StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.Default; options.SerializerSettings.FloatParseHandling = Newtonsoft.Json.FloatParseHandling.Double; options.SerializerSettings.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace; options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; options.SerializerSettings.Converters.Add(new EmptyStringToNullJsonConverter()); });

      

    2、使用JObject接收数据

    public string UpdateCompany([FromBody] JObject value)
            {
                string jsonStr = JsonConvert.SerializeObject(value);
                CompanyInfo rcompany = JsonConvert.DeserializeObject<CompanyInfo>(jsonStr);
            }
    

      

    3、关于接收的对象为null问题

    关键在于

    data: JSON.stringify(paras),
    contentType: 'application/json'
    

      

  • 相关阅读:
    服务器迁移的标准
    WMS日常运维_WJC
    WMS 162服务器空间满,清日志
    从壹开始【学代码】|| 我开发中的用到的几个框架
    从壹开始 [ Ids4实战 ] 之七 ║ 客户端、服务端、授权中心全线打通
    从壹开始 [ Design Pattern ] 之二 ║ 单例模式 与 Singleton
    从壹开始 [Admin] 之五 ║ 实现『按钮』级别权限配置
    从壹开始 NetCore 新篇章 ║ Blog.Core 开发社之招募计划书【已完成】
    回答
    三行
  • 原文地址:https://www.cnblogs.com/zhoushangwu/p/13867606.html
Copyright © 2011-2022 走看看