Вы не можете иметь эти два метода на одном контроллере, потому что ваш код просто не будет компилироваться. Запрещено иметь два метода с одинаковым именем и одинаковыми параметрами в одном классе. Вы, вероятно, имеете:
public ActionResult MyMethod()
{
}
[HttpPost]
public ActionResult MyMethod(SomeViewModel model)
{
}
Таким образом, в зависимости от того, какой HTTP-глагол используется в запросе, вызывающий действие выберет первый или второй метод. GET-запрос отправляется первому, POST-запрос отправляется второму.
Мне не известен метод расширения CanvasActionLink
(это не стандартный ASP.NET MVC), но если вызывается второе действие, это означает, что оно использует POST (либо через JavaScript AJAX, либо через элемент HTML <form>
) .
Вы можете использовать FireBug , чтобы точно узнать, какие запросы отправляются между клиентом и сервером.