我尝试在 C# WebApi 中使用方法重载[HttpPost] public HttpResponseMessage UpdateUser(PersonalInfoModel personalInfo){}[HttpPost] public HttpResponseMessage UpdateUser(RolesModel roles){}在我调用的客户端上: /UpdateUser(json) 假设我们要更新用户个人信息,因此 json 将如下所示:{firstName: "testUser", lastName: "testUser", age: 20}它应该与如下所示的 PersonalInfoModel 相匹配:public class PersonalInfoModel{ public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; }}我的想法是更新用户信息的不同部分并保持清晰,这意味着使用不同的对象调用相同的方法,我认为服务器上的 UpdateUser 会知道要使用什么函数,但它失败了, 因为服务器不知道什么使用路线。我尝试做的下一件事是像这样在服务器中只调用一个路由:[HttpPost] public HttpResponseMessage UpdateUser(dynamic obj){ return Update(obj);}public Update(PersonalInfoModel personalInfo){}public Update(RolesModel roles){}以上也没有解决错误:“最佳重载方法匹配有一些无效参数”我试图在谷歌上查看但没有成功克服这个问题。
2 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
您需要使用RouteAttribute 来区分这些方法供客户端调用。
[Route("api/Update")]
public class UpdateController
{
[Route("PersonalInfo")]
[HttpPost]
public HttpResponseMessage UpdateUser(PersonalInfoModel
personalInfo){}
[Route("Roles")]
[HttpPost]
public HttpResponseMessage UpdateUser(RolesModel roles){}
}
然后客户端调用 api/Update/PersonalInfo来调用第一个方法并 api/Update/Roles调用第二个方法
希望这可以帮助。
三国纷争
TA贡献1804条经验 获得超7个赞
尝试这个
[HttpPost]
[Route("/api/[controller]/personalInfo")]
public HttpResponseMessage UpdateUser(PersonalInfoModel personalInfo){}
[HttpPost]
[Route("/api/[controller]/roles")]
public HttpResponseMessage UpdateUser(RolesModel roles){}
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消