2013-12-03 3 views
1

У меня есть проект orchard, где я создал модуль в MVC. Я хочу передать идентификатор конкретного пользователя контроллеру, используя @ Html.ActionLink, но он не вызывает контроллер. Вот мой код:@ Html.ActionLink не работает

Ввиду:

@Html.ActionLink("100111", "AddToCart", "ShoppingCart", new { id = 101 }, null) 
//also tried, 
@Html.ActionLink("102829", "AddToCart", "ShoppingCart", new { id = 1, area = "OnlineShopping" },null) 

В контроллере:

[HttpPost] 
     public ActionResult AddToCart(int id) 
     { 
      _shoppingCart.Add(id, 1); 
      return RedirectToAction("Index"); 
     } 


    [Themed] 
    public ActionResult Index() 
    { 
     // Create a new shape using the "New" property of IOrchardServices. 
     var shape = _services.New.ShoppingCart(); 

     // Return a ShapeResult 
     return new ShapeResult(this, shape); 
    } 
+2

Возможно, вы захотите удалить '[HttpPost]'. Он не вызывает действие контроллера из-за '[HttpPost]', и нажатие на якорный тэг фактически выполняет 'get'. Поэтому попробуйте удалить атрибут '[HttpPost]' атрибута из вашего действия «AddToCart». – PSL

ответ

8

Не вызова метода действия из-за [HttpPost] и нажав на якорь тег фактически делает Get. Поэтому попробуйте удалить атрибут атрибута [HttpPost] из вашего действия AddToCart.

[HttpPost]//<--Remove this 
    public ActionResult AddToCart(int id) 
    { 
     _shoppingCart.Add(id, 1); 
     return RedirectToAction("Index"); 
    } 
+0

Работал ... не знал, что разница .... спасибо .. –

0

Нашел на ASP.NET MVC ActionLink and post method

Вы не можете использовать ActionLink потому, что просто делает якорь тег. Вы можете использовать сообщение JQuery AJAX, см. http://docs.jquery.com/Ajax/jQuery.post или просто вызвать форму формы отправки с использованием или без JQuery (который был бы не AJAX), возможно, в событие onclick любого управления берет ваше воображение.

Смежные вопросы