我有一个果园项目,我在MVC中创建了一个模块。我想使用@ Html.ActionLink将特定用户的id传递给控制器,但它不会调用控制器。这是我的代码:
在视图中:
@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);
}
答案 0 :(得分:8)
由于[HttpPost]
而未调用操作方法,因此单击锚标记实际上会执行Get
。因此,请尝试从[HttpPost]
操作中删除AddToCart
属性修饰。
[HttpPost]//<--Remove this
public ActionResult AddToCart(int id)
{
_shoppingCart.Add(id, 1);
return RedirectToAction("Index");
}
答案 1 :(得分:0)
在ASP.NET MVC ActionLink and post method
上找到了这个您不能使用ActionLink,因为它只是呈现锚标记。 您可以使用JQuery AJAX帖子,请参阅 http://docs.jquery.com/Ajax/jQuery.post或只是致电表单提交 有或没有JQuery(可能是非AJAX)的方法,也许在 任何控制的onclick事件都会让你感到高兴。