我有一个视图模型,其中包含可用的产品,在我在视图中显示后,我必须获取他点击的特定项目添加到购物车
我的行动
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>
}
}
然后,如果用户点击“添加到购物车”,那么我想使用模型将该产品的所有详细信息传递给控制器。但我无法做到这一点。
答案 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);
}