我有一个部分观点:
@model MsmStore.Domain.Products
<h3 class="lead">
@Model.Name
</h3>
@* <img src="~/images/MainLogo.jpg"/>*@
<p>
@Model.Decription
</p>
<p>
@Model.Price
</p>
@using (Html.BeginForm("UpdateBasketSummary", "Order", new { ProductID = Model.ID }))
{
@Html.Hidden("ProductID", Model.ID)
<input type="button" value="Click" />
}
这个Html.BeginForm不会调用action方法(UpdateBasketSummary)。
这是我的行动方法:
[HttpPost]
public PartialViewResult UpdateBasketSummary(string ProductID)
{
// orderRepository.AddToCart(ProductID, 1);
return PartialView("BasketSummary", ProductID);
}
这是我的路由代码:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(null, "{controller}/{action}");
答案 0 :(得分:3)
默认情况下,带有类型按钮的输入不会提交表单。您需要将其更改为
<input type="submit" value="click" />
或
<button type="submit" value="click" />
答案 1 :(得分:1)
输入类型按钮不会发布您的表单,请将其替换为..
<input type="submit" value="Click" />
答案 2 :(得分:0)
请试试这个:
@using (Html.BeginForm("UpdateBasketSummary", "Order"))
{
@Html.Hidden("ProductID", Model.ID)
<input type="button" value="Click" />
}
[HttpPost]
public PartialViewResult UpdateBasketSummary(int ProductID)
{
//orderRepository.AddToCart(ProductID, 1);
return PartialView("BasketSummary", ProductID);
}
顺便说一句。您无需在ProductID
中发送BeginForm
,因为您已经Hidden field
编辑:由于@Ben Griffiths回答:
您还需要将type='button'
更改为type='submit'
当然
答案 3 :(得分:0)
您的操作需要http方法POST,但您的beginForm调用不会将http方法设置为POST。如果没有显式设置http方法,您将被迫使用默认值,这是一个GET。