为什么我的控制器无法从视图中传回模型?

时间:2013-11-11 17:49:40

标签: asp.net-mvc asp.net-mvc-4

我的控制器无法从控制器传回模型。我花了整个上午想不出来,如果任何人可以帮我解决它的话。谢谢!!!

补充:我有点跟随这个例子,它只有表单标签而不是ajax表单

MVC4 Passing model from view to controller

模型 它是产品实体的列表,我使用.net实体框架进行数据库访问

public class VM_Products
{
    public List<FMST_Product> Products { get; set; }
}

控制器

private FMSTEntities ctx = new FMSTEntities();

public ActionResult Index()
{
  VM_Products vmps = new VM_Products();

  vmps.Products = ctx.FMST_Product.ToList();

  return View("Index", vmps);
}

// when I step in, the SelectedProducts is always null ???
public ActionResult AddToCart(FMST_Product SelectedProducts)  
{
        return View();
}

查看

@using FMST
@using FMST.Models
@model VM_Products

<ul id="products" class="list clear">           
            @foreach (var p in Model.Products)
            {
                <form action="POST" id=@p.ProductID>
                    <li class="clearfix">
                    @p.ProductID
                    <br>
                    @p.ProductName
                    <br>
                    @p.ProductDesc
                    <br>
                            @p.ProductPrice
                            <span class="darkview">
            @Html.ActionLink("Add To CT","AddToCart","Product",p);

                            </span>
                    </li>

            </form>   
            }
</ul>

2 个答案:

答案 0 :(得分:0)

看起来您的AddToCart Action需要一个产品列表,但您传递的是单个产品。

可以一步将多个产品添加到购物车中吗?希望这能指出你正确的方向。

答案 1 :(得分:0)

更改您的html帮助程序:

@Html.ActionLink("Add To CT","AddToCart","Product",p);

为:

@Html.ActionLink("Add To CT","AddToCart","Product",p,null);

由于您在html帮助器中指定了ControllerName,因此需要通过将null作为最后一个参数来强制帮助程序使用正确的重载。