[英]Unable to add references in Visual studio 2019 Preview and Visual Studio 2019
[英]Unable to pass parameter to the Controller in Visual Studio (2019 v)
我目前無法將我創建的方法中的參數傳遞給 Controller。 當我使用 postman 中的參數手動運行它時,一切正常。
如何將參數傳遞給 Controller? 有沒有辦法將其設置為自動路由,而不是根據不同的參數創建個人路由? 這是一個非常基礎的應用程序。
錯誤消息:{“消息”:“未找到與請求 URI 'https://localhost:44364/api/WebInterface/RemoveNurse' 匹配的 HTTP 資源。”,“MessageDetail”:“未在 controller 上找到任何操作”與請求匹配的 WebInterface'。"}
CONTROLLER:
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
}
};
路由配置.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
action = "Index",
id = UrlParameter.Optional
}
);
}
}
方法:(護士服務.cs)
public APIResponseModel removeNurse(int nurseID)
{
using (var dbContext = new DataBase())
{
OnCallNurses_Nurses rowToDelete = (from nurse in dbContext.OnCallNurses_Nurses
where nurse.id == nurseID
select nurse).SingleOrDefault();
if (rowToDelete == null)
{
return new APIResponseModel(false, "Cannot delete nurse.");
}
else
{
dbContext.OnCallNurses_Nurses.Remove(rowToDelete);
dbContext.SaveChanges();
return new APIResponseModel(true, "Nurse successfully removed.");
}
}
}
前端
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
},
......
});
並更改動作 header:
[Route("~/api/WebInterface/RemoveNurse")]
public IHttpActionResult RemoveNurse(int nurseID)
或更改您的 controller header
[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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.