Asp.net mvc MVC:对控制器操作的ajax调用传递的参数少于所需的参数,但仍然有效,它是如何工作的?

Asp.net mvc MVC:对控制器操作的ajax调用传递的参数少于所需的参数,但仍然有效,它是如何工作的?,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,我的查看页面上有此功能 var params = { Param1: $('#as').val(), Param2: $('input[name=dswe]').val(), Param3: $('inpu`enter code here`t:radio[name=wer]:checked').val() } $.ajax({ typ

我的查看页面上有此功能

var params = {
                Param1: $('#as').val(),
                Param2: $('input[name=dswe]').val(),
                Param3: $('inpu`enter code here`t:radio[name=wer]:checked').val()
            }
  $.ajax({
                    type: 'POST',
                    url: 'controlleractionname',
                    data: params,
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(xhr.statusText);
                    },

                    success: function(html) {
                        $('#Message').html('MRR Received Date SAVED');
                        closeDialog();

                    },
                    cache: false
                });
这将在控制器页面上调用以下操作

  public string controlleractionname(string param1, DateTime param2, int param3, Classdata data1)
        {

     code is here
        }
现在,我的问题是,这工作非常好,但我想知道这是如何工作的?因为我只将3个参数从ajax传递给这个控制器操作。第四个参数是WCF服务的datacontract类

我这样问是因为这是一个工作应用程序,我是这个项目的新手,并试图了解其功能


欢迎任何输入。

当ASP.NET MVC首先收到请求时,它会将其与路由匹配。您必须有一个与要发布到的URL匹配的路由

一旦ASP.NET MVC找到匹配项,它将实例化路由中指示的控制器,并调用路由中指示的操作方法

此时,ASP.NET MVC将经历一个过程,尝试从HTTP请求中查找信息(表单值、查询字符串参数等),并将其与操作的方法定义中定义的参数相匹配。例如,如果MVC找到查询字符串参数“param1”,它将自动将查询字符串值传递给方法中的“param1”。如果在请求中找不到值,它将传递一个默认值(例如,字符串为null,整数为0)


这是一个简单的解释,但我希望它能让你了解发生了什么

当你调用一个动作时,你不必提供所有的参数;为什么关于MVC架构的C#(或者其他一些.NET风格,实际上不确定)问题经常只提到
MVC
标签,好像C#垄断了
MVC
?换句话说:请添加一个合适的语言标签来配合它。(我不确定这是否真的是C#,否则我会添加正确的标记)。