使用MVC模型获取选定的cartItem

时间:2014-10-02 09:40:43

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

我有一个视图模型,其中包含可用的产品,在我在视图中显示后,我必须获取他点击的特定项目添加到购物车

我的行动

      public ActionResult Test1()
       {
        DUPVM obj = new DUPVM();
        MembersipEntities Entity = new MembersipEntities();
        obj.test = Entity.Dups.ToList();
        return View(obj);
       }

       [HttpPost]
        public ActionResult Test1(Dup model)
        {
            return View(model);
        }

和viewmodel

public class DUPVM
    {
        public IEnumerable<Dup> test { get; set; }
    }

在我看来,我将通过循环显示所有可用的产品

 @model MVC4.Models.DUPVM
@using (Html.BeginForm("Test1", "PDF", FormMethod.Post))
{
    foreach (var item in Model.test)
    {


        @Html.DisplayFor(modelitem => item.ID)
        <br>
        @Html.DisplayFor(modelitem => item.Rate)
        @Html.DisplayFor(modelitem => item.AgentID)
        @Html.TextBoxFor(modelitem => item.ID)
        <br>
        <input type="submit" value="Add to cart" />
        <br>
    }
}

然后,如果用户点击“添加到购物车”,那么我想使用模型将该产品的所有详细信息传递给控制器​​。但我无法做到这一点。

2 个答案:

答案 0 :(得分:2)

首先更改视图以在循环内创建form。这样,您将获得仅包含所需值的离散形式。

@model MVC4.Models.DUPVM
foreach (var item in Model.test)
{
    @using (Html.BeginForm("Test1", "PDF", FormMethod.Post))
    {
        @Html.DisplayFor(modelitem => item.ID)
        <br>
        @Html.DisplayFor(modelitem => item.Rate)
        @Html.DisplayFor(modelitem => item.AgentID)
        @Html.TextBoxFor(modelitem => item.ID)
        <br>
        <input type="submit" value="Add to cart" />
        <br>
    }
}

答案 1 :(得分:1)

您的视图是DUPVM类的强类型,但您的控制器操作需要一个Dup。 Razor帮助器形式的默认行为是以与接受的格式相同的方式发布模型。

要实现此功能,您需要为每个项目创建局部视图,将该部分视图强烈键入Dup(而不是DUPVM),并编写一些将所选项目发布到控制器的javascript ,或每个项目都有一个单独的表格。

您的部分视图可能看起来像这样

@model MVC4.Models.Dup
@using (Html.BeginForm("Test1", "PDF", FormMethod.Post))
{
        @Html.DisplayFor(x => x.ID)
        <br>
        @Html.DisplayFor(x => x.Rate)
        @Html.DisplayFor(x => x.AgentID)
        @Html.TextBoxFor(x => x.ID)
        <br>
        <input type="submit" value="Add to cart" />
        <br>
}

你的主要观点如下:

@model MVC4.Models.DUPVM
@foreach (var item in Model.test)
{
    Html.RenderPartial("_YourPartialView", item);
}