【发布时间】:2019-06-08 18:00:18
【问题描述】:
我有一个包含 2 个参数的 WebAPI 控制器操作。 我如何称呼这个动作?
使用单个参数,我的代码运行良好。 如何调用具有 2 个参数的 WebAPI? 我尝试了几种方法,但它不起作用。 我有一个具有 2 个参数的 WebAPI 控制器操作。 我如何称呼这个动作?
使用单个参数,我的代码运行良好。 如何调用具有 2 个参数的 WebAPI? 我尝试了几种方法,但都不起作用。
提前致谢
//With a single parameter it works good:
[Route("api/Controller/GetAllVendors")]
[HttpPost]
public IEnumerable<Vendor> GetAllVendors(LoginParameters loginParam)
{
}
function LoadVendorLkup() {
alert("InVendorCall");
var loginPar = {
UserName: 'user1',
CompanyID: 'company1',
ProgramID: ''
}
$.ajax({
type: 'POST',
url: '/api/Controller/GetAllVendors',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(loginPar),
/////////////////////////////////////////////////////////////////////////
//With 2 parameters , it does not work:
[Route("api/Controller/GetVendorsForSelectedHouseholdID")]
[HttpPost]
public IEnumerable<Vendor> GetVendorsForSelectedHouseholdID(LoginParameters loginParam, string hHoldID)
{
}
function LoadVendorLkupForSelectedHousehold() {
var hHoldtext = $('#txtHHold').val();
var loginPar = {
UserName: 'user1',
CompanyID: 'company1',
ProgramID: ''
}
$.ajax({
type: 'POST',
url: '/api/controller/GetVendorsForSelectedHouseholdID',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(loginPar), 'hHoldID': hHoldtext,
//////////////////////////////////////////////////////
//I also tried the following:
[Route("api/controller/GetVendorsForSelectedHouseholdID/{hHoldID:String}")]
[HttpPost]
public IEnumerable<Vendor> GetVendorsForSelectedHouseholdID([FromBody()]LoginParameters loginParam,[FromUri()]string hHoldID)
{
}
function LoadVendorLkupForSelectedHousehold() {
alert("InVendorCall2");
var hHoldtext = $('#txtHHold').val();
alert("Household:" + hHoldtext);
var loginPar = {
UserName: 'user1',
CompanyID: 'company1',
ProgramID: ''
}
$.ajax({
type: 'POST',
url: '/api/controller/GetVendorsForSelectedHouseholdID?hHoldID='+ hHoldtext,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(loginPar),
【问题讨论】:
-
一般来说,你发送给控制器的是一个“视图模型”。如果它与后端中的特定类不完全匹配,那没关系,因为您可以根据需要解析它。那么,为什么不将
hHoldID添加到LoginParameters或创建一个表示视图模型的新类? -
将 hHoldID 添加到 LoginParameters 是我的最后一个选择。我仍然想知道当有 2 个参数时如何调用。我尝试过的那些不起作用。我打电话的方式有什么问题吗?
-
如果其中一个是复杂类型,我不确定您是否可以使用多个参数。我认为您只能使用原语和字符串,但我不是 100% 确定。
标签: c# jquery asp.net asp.net-web-api asp.net-web-api2