C# 无法将参数传递到Visual Studio中的控制器(2019 v)

C# 无法将参数传递到Visual Studio中的控制器(2019 v),c#,asp.net,visual-studio,routes,C#,Asp.net,Visual Studio,Routes,我当前无法将参数从我创建的方法传递到控制器。当我用postman中的参数手动运行它时,一切正常 如何将参数传递给控制器?有没有办法将其设置为自动路由,而不是根据不同的参数创建单独的路由?这是一个非常基本的应用程序 错误消息: {“Message”:“未找到与请求URI匹配的HTTP资源”https://localhost:44364/api/WebInterface/RemoveNurse“.”,“MessageDetail”:“在控制器“WebInterface”上未找到与请求匹配的操作。”}

我当前无法将参数从我创建的方法传递到控制器。当我用postman中的参数手动运行它时,一切正常

如何将参数传递给控制器?有没有办法将其设置为自动路由,而不是根据不同的参数创建单独的路由?这是一个非常基本的应用程序

错误消息: {“Message”:“未找到与请求URI匹配的HTTP资源”https://localhost:44364/api/WebInterface/RemoveNurse“.”,“MessageDetail”:“在控制器“WebInterface”上未找到与请求匹配的操作。”}

控制器:

using WebInterfaceAPI.Helpers;
using WebInterfaceAPI.Services;
using WebInterfaceAPI.Models;
using Newtonsoft.Json;
using System.Data.SqlClient;
using System.Web.Http;
using System.Net;

namespace WebInterfaceAPI.Controllers
{
    public class WebInterfaceController : ApiController
    {
        private NurseService NurseService { get; set; }

        public WebInterfaceController()
        {
            NurseService = new NurseService();
        }

        #region Nurse Actions
        /// <summary>
        /// Removes specified nurse
        /// </summary>
        /// <param name="nurseID"></param>
        /// <returns></returns>
        [HttpPost]
        public IHttpActionResult RemoveNurse(int nurseID)
        {
            APIResponseModel result = NurseService.removeNurse(nurseID);
            if (result.IsSuccess)
            {
                return Ok(result.Message);

            }
            else
            {
                return Content(HttpStatusCode.BadRequest, result.Message);
            }
        }

        #endregion
    }
};
方法:(NurseService.cs)

前端

function removeNurse(nID) {

$('#loader').removeClass('d-none');
var webMethod = "https://localhost:44364/api/WebInterface/RemoveNurse";
// var webMethod = "https://webinterface.com/api/api/WebInterface/RemoveNurse";

$.ajax({
    type: "POST",
    url: webMethod,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: {
        nurseID: nID
    },
    success: function (data) {
        alert(data);
        // $(nurseRow).remove();
        $('#loader').addClass('d-none');

    },
    error: function (xhr, status) {
        console.log(xhr.responseText);
        console.log(xhr.status);
    }
});
};

您必须修复url并从ajax中删除contentType和type


$.ajax({
        type: "POST",
        url:  "https://localhost:44364/api/WebInterface/RemoveNurse",
        data: {
            nurseID: nID
        },
......
});
并更改操作标题:

[Route("~/api/WebInterface/RemoveNurse")]
 public IHttpActionResult RemoveNurse(int nurseID)
或者更改控制器标题

[Route("api/[controller]/[action]")]
public class WebInterfaceController : ApiController
并将属性路由添加到配置:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
但更好的方法是使用路由传递id


$.ajax({
        url:  "https://localhost:44364/api/WebInterface/RemoveNurse/"+nID,
        success: function (data) 
......
});
在这种情况下,操作将是

[Route("~/api/WebInterface/RemoveNurse/{nurseId}")]
 public IHttpActionResult RemoveNurse(int nurseID)

你也可以发布你的控制器代码吗?嗨,@Sergey我更新了控制器部分。谢谢你的尝试,但我仍然收到相同的错误消息。我更新了控制器代码,因为它应该是nurseID,而不是id。您在我的代码中看到id了吗?这是我的错误。我在控制器中的参数是id,而不是nurseID。我想你认为这是个错误。不幸的是,即使在将属性添加到RouteConfig.cs之后,我仍然会收到相同的错误。谢谢你的努力。我很乐意帮忙。

$.ajax({
        url:  "https://localhost:44364/api/WebInterface/RemoveNurse/"+nID,
        success: function (data) 
......
});
[Route("~/api/WebInterface/RemoveNurse/{nurseId}")]
 public IHttpActionResult RemoveNurse(int nurseID)