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

发布于 2024-12-11 01:21:05 字数 1090 浏览 0 评论 0原文

我的视图页面上有这个功能,

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服务的数据契约类。

我问这个问题是因为这是一个有效的应用程序,而且我是这个项目的新手并试图了解其功能。

任何意见都会受到赞赏。

I have this function on my view page

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
                });

This calls the following action on controller page

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

     code is here
        }

Now, my question is this works perfectly fine, but I wanted to know how is this working ? since I am passing only 3 parameters from ajax to this controller action. The fourth parameter is a datacontract class of a WCF service.

I am asking because this is a working application and I am new to this project and trying to understand the functionality.

Any input is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心如狂蝶 2024-12-18 01:21:05

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

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

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

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

When ASP.NET MVC receives a request first it matches it to a route. You must have a route that matches the URL that you are posting to.

Once ASP.NET MVC has found a match it will instantiate the controller that was indicated in the route and call the action method also indicated on the route.

At this point ASP.NET MVC goes through a process where it tries to find information from the HTTP request (form values, query string parameters, et cetera) and matches it to the parameters defined in your method definition for the action. For example, if MVC finds a query string parameter "param1" it will automatically pass the query string value to the "param1" in your method. If it cannot find a value in the request it will pass a default value (e.g. null for strings, 0 for integers.)

This is a simplified explanation but I hope it gives you an idea of what's going on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文