Jquery Mvc表单数据未发布到Asp.net Web API控制器

Jquery Mvc表单数据未发布到Asp.net Web API控制器,jquery,ajax,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我的视图中有以下cshtml: <div> @(Html.Kendo().DropDownList() .Name("Designation") .DataValueField("Designation") .DataTextField("Designation") .SelectedIndex(0) .BindTo((System.Collections.

我的视图中有以下cshtml:

<div>
    @(Html.Kendo().DropDownList()
            .Name("Designation")
            .DataValueField("Designation")
            .DataTextField("Designation")
            .SelectedIndex(0)
            .BindTo((System.Collections.IEnumerable)ViewData["Designation"]))
    @(Html.Kendo().DropDownList()
            .Name("DeptId")
            .DataValueField("DeptId")
            .DataTextField("DeptName")
            .SelectedIndex(0)
            .BindTo((System.Collections.IEnumerable)ViewData["Department"]))
    <input class="k-button" id="btnFilter" type="submit" value="Filter" />
</div>
以下是我的API控制器Post方法:

public HttpResponseMessage PostEmployee(EmployeeViewModel newEmployee, String deptname, String designation)
        {
           //code
        }

如何将dropdownlost的值发送到ApicController

您使用的是
GET
方法,而API方法是
POST

您的请求看起来像这样

$(document).ready(function () {
        $("#btnFilter").click(function () {
            debugger;
            var designation = $("#Designation").val();
            var deptname = $("#DeptId").val();
            $.ajax({
                url: "http://localhost:8648/api/Employee/PostEmployee",
                type: "Post",
                data: {"newEmployee":/*your serialized data for the model*/,
                      "deptname":deptname ,"designation":designation }
                contentType: 'application/json; charset=utf-8',
                success: function (data) { alert("posted") },
                error: function () { alert('error'); }
            });
        });
    });  

根据你的问题,你只想发布下拉数据,然后 试试这个

$(document).ready(function () {
        $("#btnFilter").click(function () {
            debugger;
            var designation = $("#Designation").val();
            var deptname = $("#DeptId").val();
            $.ajax({
                url: "http://localhost:8648/api/Employee?deptname="+deptname+"&designation="+designation ,
                type: "Post",                    
                contentType: 'application/json; charset=utf-8',
                success: function (data) { alert("posted") },
                error: function () { alert('error'); }
            });
        });
    });  
Api控制器

public HttpResponseMessage PostEmployee(String deptname, String designation)
        {
           //code
        }

您正在尝试将数据作为请求url的一部分发送。您只有在发出get请求时才会这样做

如果希望作为get请求执行此操作,则需要在
$.ajax
函数中指定它是get请求并正确构造url:

$.ajax({
          //construct the url with the data as part of the query string
          url: "http://localhost:8648/api/Employee?deptname="+deptname+"&designation="+designation ,
          //specify it's a get request
          type: "GET",                    
          contentType: 'application/json; charset=utf-8',
          success: function (data) { alert("posted") },
          error: function () { alert('error'); }
      });
});
使用如下api控制器:

[HttpGet]
public HttpResponseMessage PostEmployee(String deptname, String designation)
{

}
[HttpPost]
public HttpResponseMessage PostEmployee(String deptname, String designation)
{

}
但是,如果您希望作为POST请求执行此操作,则需要在请求正文中发送数据:

$.ajax({
          url: "http://localhost:8648/api/Employee,
          //specify it's a POSTrequest
          type: "POST",                    
          contentType: 'application/json; charset=utf-8',
          //send data as part of body
          data: {designation: designation, deptname: deptname}
          success: function (data) { alert("posted") },
          error: function () { alert('error'); }
      });
});
您的api控制器如下所示:

[HttpGet]
public HttpResponseMessage PostEmployee(String deptname, String designation)
{

}
[HttpPost]
public HttpResponseMessage PostEmployee(String deptname, String designation)
{

}

您没有在请求中指定方法名称
API控制器
不能接受这样的参数。添加
deptname
designation
作为
EmployeeViewModel
的属性,或者创建新模型。情况并非如此。没有理由一篇文章不能在URI中包含一些数据,也不能在文章正文中包含一些数据。