MVC传递属性作为参数

时间:2017-06-16 20:20:14

标签: c# asp.net-mvc parameters http-status-code-404

我正在尝试创建购物车但是当尝试将Id作为参数传递时,这就是发生的事情

http://localhost:15359/RealCartController/Order/FinalProject.Models.Clothes

HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。

这是在RealCartController

   public ActionResult Order(int id)
            {
                if(Session["cart"] == null)
                {
                    List<Item> cloth = new List<Item>();
                    cloth.Add(new Item(de.Clothes.Find(id),1));
                    Session["cart"] = cloth;
                }
                else
                {
                    List<Item> cart = (List<Item>)Session["cart"];
                    int index = isExisting(id);
                    if (index == -1)
                        cart.Add(new Item(de.Clothes.Find(id), 1));
                    else
                        cart[index].Amount++;

                    Session["cart"] = cart;
                }
                return View();
            }

这是在View中调用函数

@if (Model != null)
{

    foreach (Clothes Id in Model)
    {
        if (Id.Amount > 0)
        {

        <div id="container">
            <div id="row">

                <img src="~/Content/img/@Html.DisplayFor(model => Id.ImagePath)" style="height:200px;width:200px;" />
                <br />
                <br />
                    @Html.ActionLink("Add To Cart", "Order", "RealCartController", new { id = Id }, null);
            </div>
        </div>
        }

    }
}

这是功能视图

@foreach (Item item in (List<Item>)Session["cart"])
        {

            <tr>
                <td>@item.Cl.Id</td>
                <td>@item.Cl.Price</td>
                <td>@item.Cl.Amount</td>
                <td>@item.Cl.Price * item.Cl.Amount</td>
            </tr>
        }

2 个答案:

答案 0 :(得分:0)

此行Id中的变量foreach (Clothes Id in Model)是一个对象而不是数字。当您尝试使用ActionLink函数将对象作为参数发送时,它将只发送对象类名。因此,api调用无法解析参数。

您可以看到在网址中发送了一个类名。

  

http://localhost:15359/RealCartController/Order/FinalProject.Models.Clothes

FinalProject.Models.Clothes部分应该是订单ID号。

  

http://localhost:15359/RealCartController/Order/1

答案 1 :(得分:0)

它应该看起来像这样

    @Html.ActionLink("Add To Cart", "Order", "RealCartController", new { id = 
    Id.ProductId }, null);

ProductId来自您的班级/型号,是项目的主键