Jquery Mvc表单数据未发布到Asp.net Web API控制器
我的视图中有以下cshtml: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.
<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中包含一些数据,也不能在文章正文中包含一些数据。