Asp.net mvc 在asp.net MVC web api中调用自定义函数
我在公司控制器中具有身份验证功能Asp.net mvc 在asp.net MVC web api中调用自定义函数,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我在公司控制器中具有身份验证功能 [ActionName("Authenticate")] [HttpGet] public bool Authenticate(Company company) { if (Uow.Companies.AuthenticateCompany(company)) return true; return false;
[ActionName("Authenticate")]
[HttpGet]
public bool Authenticate(Company company)
{
if (Uow.Companies.AuthenticateCompany(company))
return true;
return false;
}
public Company Get(int id)
{
return Uow.Companies.GetById(id);
}
这是使用以下ajax查询调用的
$.ajax({ url: "/api/company/Authenticate", type: 'get', data: company })
公司是一个js对象
Company: function (name, phoneNumber, password) {
this.Name = name;
this.PhoneNumber = phoneNumber;
this.password = password;
}
var company = new Company($('#TextBoxCompanyName').val(),'00000000', $('#TextBoxCompanyPassword').val());
我的api路径如下
config.Routes.MapHttpRoute(
name: "Action",
routeTemplate: "api/{controller}/{action}"
);
当代码运行时,web api调用公司控制器中的以下函数
[ActionName("Authenticate")]
[HttpGet]
public bool Authenticate(Company company)
{
if (Uow.Companies.AuthenticateCompany(company))
return true;
return false;
}
public Company Get(int id)
{
return Uow.Companies.GetById(id);
}
如何调用自定义get函数?Web.API尝试按定义顺序匹配路由 从 框架尝试将URI路径中的段与模板匹配。模板中的文字必须完全匹配。占位符匹配任何值,除非指定约束。框架与URI的其他部分(如主机名或查询参数)不匹配框架选择路由表中与URI匹配的第一条路由。 因此,路线定义的顺序很重要 您需要将您的
“操作”
放在“DefaultApi”
否则,wep.api会将您的url
/api/company/Authenticate
解释为controller=company,id=Authenticate,因此它将路由到您的Get操作。Web.api尝试按照定义顺序匹配路由
从
框架尝试将URI路径中的段与模板匹配。模板中的文字必须完全匹配。占位符匹配任何值,除非指定约束。框架与URI的其他部分(如主机名或查询参数)不匹配框架选择路由表中与URI匹配的第一条路由。
因此,路线定义的顺序很重要
您需要将您的“操作”
放在“DefaultApi”
否则,wep.api将您的url
/api/company/Authenticate
解释为controller=company和id=Authenticate,因此它将路由到您的Get操作。JS($.ajax
)代码中的公司是什么?@Carlosfiguera进行了更新路由顺序很重要。如果您有多条路由,那么“操作”
应该先出现,然后是默认路由。JS($.ajax
)代码中的公司
是什么?@carlosfiguera进行了更新路由顺序很重要。如果您有多条路由,那么“操作”
应该首先出现,然后是默认路由。谢谢,公司数据没有通过此路由发送。你知道为什么吗?如果是GET
请求和复杂类型,如Company
,你需要用FromUriAttribute
:public bool Authenticate([FromUri]Company>){
更多信息:谢谢,公司数据没有被发送。你知道为什么吗?在GET
请求和复杂类型,如company
的情况下,你需要用FromUriAttribute
注释你的参数:public bool Authenticate([FromUri]company){
更多信息: