我试图在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){}
以上内容也不适用于错误: “最佳的重载方法匹配具有一些无效的参数” 我试图查看Google,但未能克服这一问题。
答案 0 :(得分:0)
尝试一下
[HttpPost]
[Route("/api/[controller]/personalInfo")]
public HttpResponseMessage UpdateUser(PersonalInfoModel personalInfo){}
[HttpPost]
[Route("/api/[controller]/roles")]
public HttpResponseMessage UpdateUser(RolesModel roles){}
答案 1 :(得分:0)
您需要使用Route
属性来区分这些方法以供客户端调用。
[Route("api/Update")]
public class UpdateController
{
[Route("PersonalInfo")]
[HttpPost]
public HttpResponseMessage UpdateUser(PersonalInfoModel
personalInfo){}
[Route("Roles")]
[HttpPost]
public HttpResponseMessage UpdateUser(RolesModel roles){}
}
然后客户端调用pi/Update/PersonalInfo
来调用第一个方法,然后
api/Update/Roles
调用第二种方法
希望这会有所帮助。