ASP.NET在按钮操作上传递项目ID

时间:2016-05-02 10:23:10

标签: c# asp.net asp.net-mvc

我是ASP.Net的新手,我现在正在学习一本书。

即使我已经完成了每一步,但仍然发生了一些错误。我会尽力解释它。

该应用程序包含一个简单的项目列表并将其添加到购物车。在我的控制器中,我有两个函数Add / Remove,它带有一个productId参数。问题是它没有很好的绑定,因此当我执行代码时,productId参数为null。 在这段代码的有趣部分后......

CartController.cs

    namespace SportStore.Controllers {
    public class CartController : Controller {

    public ViewResult Index(Cart cart, string returnUrl)
    {
        return View(new CartIndexViewModel
        {
            Cart = cart,
            ReturnUrl = returnUrl
        });
    }

    public RedirectToRouteResult AddToCart(Cart cart, int? productId, string returnUrl)
    {
        Debug.WriteLine("\n_ _ _ _ _ Product Id selected: " + productId);

        Product product = Singleton.GetInstance().Products.GetAll()
                .FirstOrDefault(p => p.Id == productId);

        if (product != null)
        {
           cart.AddItem(product, 1);
        }

        return RedirectToAction("Index", new { returnUrl });
    }
...
... Remove function 

ProductSummary.cshtml

@model SportStore.Models.Entities.Product
@using SportStore.HtmlHelpers

<div class="well">
    <h3>
        @Model.Id
        <strong>@Model.Name</strong>
        <span class="pull-right label label-primary">@Model.Price.ToString("c")</span>
    </h3>
    @using (Html.BeginForm("AddToCart", "Cart"))
    {
        <div class="pull-right">
            @Html.HiddenFor(x => x.Id)
            @Html.Hidden("returnUrl", Request.Url.PathAndQuery)
            <input type="submit" class="btn btn-success" value="Add To Cart" />
        </div>
    }
    <span class="lead">@Model.Description</span>
</div>

我不明白的是在视图中正确显示了ID 但是在呼吁采取行动时,它不会传输Id。 我错过了什么? (如果你需要代码的其他部分告诉我,我会把它作为答案)

好吧,如果某人有某些东西可以帮助我,我会很高兴。

0 个答案:

没有答案