簡體   English   中英

Mvc表單數據未發布到Asp.net Web API控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM