2016-08-18 42 views
0

在我的MVC控制器,我有两个方法具有相同的动作名称但不同的路由属性,以便它们有不同的反应,以GET和POST请求(该link建模):为什么GET和POST请求使用[HttpGet]标记的相同方法?

[HttpGet] 
public string Test() 
{ 
    return "get"; 
} 

[ActionName("Test")] 
[HttpPost] 
public string Test_Post() 
{ 
    return "post"; 
} 

和相应的URI只是Sample/Test。我还在我的RouteConfig.cs中启用了routes.MapMvcAttributeRoutes()的属性路由。

但是,如果我向此URI发送GET或POST请求,它总是调用Test(),从不Test_Post()。为什么请求路由到相同的方法并忽略路由属性?

编辑:为了澄清,我将请求发送与AJAX调用:

$.post("https://{baseURL}/Sample/Test", function(result){ 
     console.log(result); 
    }}); 

总是打印通过Test_Post()“得到”通过Test()而不是“后”。

回答

0

解决!原来我在我的MVC控制器中使用了System.Web.Http命名空间,但ActionName,AcceptVerbs等属性存在于Http和Mvc命名空间中。我明确引用了System.Web.Mvc命名空间,现在这些属性可以正常工作。

相关问题