2014-09-02 46 views
1

我有两个动作方法MVC同样的动作名称POST方法调用去得到方法

[HttpGet] 
     [AcceptVerbs(HttpVerbs.Get)] 
     [ActionName("Assignments")] 
     public ActionResult Assignments() 
     { 
     } 

[ActionName("Assignments")] 
     [HttpPost] 
     public ActionResult Assignments(int x) 
     { 
     } 

我有@ html.Actionlink这是suppoe调用上述POST方法,但它调用GET方法。尽管有[HttpPost]属性。

当我火从邮差它工作正常,但它是从失败的请求@ Html.ActionLink

+0

cany你显示你的actionlink代码? – 2014-09-02 12:47:59

+3

ActionLinks不会触发POST请求,它们会触发GET请求。您仍然可以将参数传递给处理GET请求的操作,这与您尝试的方式相同。 – 2014-09-02 12:51:20

+0

我在BeginForm内的部分视图中具有以下代码

@ Html.ActionLink(Model.Item3Display,Model.TargetActionName,Model.TargetControllerName,new {filter = Model.Item3Value,view = Model.ViewType},新{})
user3564183 2014-09-02 13:33:44

回答

0

用作

[ActionName("Assignments/{x}")] 
    [HttpPost] 
    public ActionResult Assignments(int x) 
    { 
    } 
+0

实际上,我实际上有公共的ActionResult Assignments(类x,int?y),所以它会像[ActionName(“Assignments/{x}/{y} “) – user3564183 2014-09-02 12:38:51

2

据我知道你不能生成@Html POST链接.ActionLink。您需要使用带有@ Html.BeginForm或@ Ajax.BeginForm的表单。

0

我已通过在同一cshtml文件中编写自定义ajax调用来解决此问题,并且它开始调用。