MVC 方法接收空值

Posted

技术标签:

【中文标题】MVC 方法接收空值【英文标题】:MVC Method receiving null value 【发布时间】:2021-08-12 00:53:32 【问题描述】:

我正在尝试将 2 个参数从控制台应用程序传递给 ASP.NET 控制器中的一个方法。 当我尝试这样做时,参数不断收到空值。

这是客户端的代码

HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://localhost:44331/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            Dictionary<string, string> data = new Dictionary<string, string>
            
              
                 "user12",u,
                 "pass12",p,

            ;
            List<Dictionary<string, string>> x = new List<Dictionary<string, string>>();
            x.Add(data);
            HttpResponseMessage response = client.PostAsJsonAsync("Home/Receiver", x).Result;
            if (response.IsSuccessStatusCode)
            
                Console.WriteLine("success!!");            
            

其中up 是用户在控制台应用运行时定义的参数。

这是我要传递参数的方法的代码

[HttpPost]  
public void Receiver(string user12, string pass12) 

    MessageBox.Show("user is " + user12 +"and pass is"  + pass12);

基本上,我想将参数up从客户端传递给方法中的参数user12pass12。但是,当我运行代码时,值为 user12 而 pass12 为空!!

当我尝试通过邮递员进行发布请求时,它可以工作。

非常感谢任何帮助。

【问题讨论】:

这能回答你的问题吗? HttpClient post request for WebApi using asp.net mvc application 【参考方案1】:

试试这个:

public static async Task GetData(string u, string p)

           using (var client = new HttpClient())
          
            var contentType = new MediaTypeWithQualityHeaderValue("application/json");
            var baseAddress = "https://localhost:44331";
            var api = "/Home/Receiver";
            client.BaseAddress = new Uri(baseAddress);
            client.DefaultRequestHeaders.Accept.Add(contentType);
           var data = new Dictionary<string, string>
            
              
                 "user12",u,
                 "pass12",p,

            ;
     var jsonData = JsonConvert.SerializeObject(data);
        var contentData = new StringContent(jsonData, Encoding.UTF8, "application/json");
            var response = await client.PostAsync(baseAddress + api,contentData);
                        
            if (response.IsSuccessStatusCode)
            
                var stringData = await response.Content.ReadAsStringAsync();
                var result = JsonConvert.DeserializeObject<object>(stringData);
            
       

这是你的程序

public class Program

    static async Task Main(string[] args)
   
        var u="user";
         var p="password";
        await GetData(u,p);
        Console.WriteLine("finished");
        
    

    public static async Task GetData(string u, string p)
    
          ...code above
    

 

并修正你的行为

添加模型类

public class Model
    
        public string User12  get; set; 
        public string Pass12  get; set; 
    

并更正动作标题

        public void Receiver(Model model) 
        
             MessageBox.Show("user is " + model.User12 +"and pass is"  + model.Pass12);
        

            

【讨论】:

嗨,Serge,我设法通过 TAHA SULTAN TEMURI 发送的链接解决了问题,但是,感谢您如此迅速地回答问题,祝您有美好的一天

以上是关于MVC 方法接收空值的主要内容,如果未能解决你的问题,请参考以下文章

Jersey POST 方法正在接收空值作为参数

Xamarin 形式:IValueConverter 在 Convert 方法中接收空值

Spring MVC 之请求处理方法可接收参数

spring mvc 坑之PUT方法接收不到请求参数

Spring mvc 表单提交问题!!关于date类型!!

Java8特性:Optional空值处理