[英]Mvc Form data is not post to the Asp.net Web API Controller
我認為以下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>
我想將兩個dropdownlist的值發布到我的Web ApiController。 我創建了以下jquery ajax方法來調用api。 但這是行不通的。
jQuery的:
$(document).ready(function () {
$("#btnFilter").click(function () {
debugger;
var designation = $("#Designation").val();
var deptname = $("#DeptId").val();
$.ajax({
url: "http://localhost:8648/api/Employee" + deptname + designation,
type: "Post",
// data: JSON.stringify([designation, deptname]), //{ Name: name,
// Address: address, DOB: dob },
contentType: 'application/json; charset=utf-8',
success: function (data) { alert("posted") },
error: function () { alert('error'); }
});
});
});
這是我的API控制器發布方法:
public HttpResponseMessage PostEmployee(EmployeeViewModel newEmployee, String deptname, String designation)
{
//code
}
我如何將dropdownlost的值發送到我的ApiController。
您正在使用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請求時才這樣做。
如果您希望以此作為獲取請求,則需要在$.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)
{
}
但是,如果您希望以此作為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控制器,如下所示:
[HttpPost]
public HttpResponseMessage PostEmployee(String deptname, String designation)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.