我正在开发MVC 4应用程序,我需要将更新后的值从视图传递给控制器。
@foreach (var item in Model)
{
<tr>
<td>@item.ProductId</td>
<td>@item.Product.ProductName</td>
<td>@item.Product.UnitPrice</td>
<td>
@Html.TextBox("QuantityBox", item.Quantity)
</td>
</tr>
}
//Update Button
@using (Html.BeginForm("UpdateCart", "Cart", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="submit" id="submit" name="Update" value="Update" />
}
可以为不同的行输入不同的值。 我需要将这些值从数量文本框传递给控制器。
答案 0 :(得分:1)
尝试使用for
循环
@using (Html.BeginForm("UpdateCart", "Cart", FormMethod.Post))
{
@for(int idx = 0;idx < Model.Length;idx++)
{
<tr>
<td>@Model[idx].ProductId</td>
<td>@Model[idx].Product.ProductName</td>
<td>@Model[idx].Product.UnitPrice</td>
<td>
@Html.TextBoxFor(_ => Model[idx].Quantity)
</td>
</tr>
}
@Html.AntiForgeryToken()
<input type="submit" id="submit" name="Update" value="Update" />
}
当您将上述内容发布回控制器时,MVC模型绑定器将看到Model[0].Quantity
,Model[1].Quantity
等的文本框,并尝试将它们绑定到传入模型。使用foreach
循环将导致所有数据都不会传回控制器。
我不知道你在视图中使用了什么@model
,但我假设MVC模型绑定器能够解决这个问题。
答案 1 :(得分:0)
Write like this..
@using (Html.BeginForm("UpdateCart", "Cart", FormMethod.Post))
{
@Html.AntiForgeryToken()
@foreach (var item in Model)
{
<tr>
<td>@item.ProductId</td>
<td>@item.Product.ProductName</td>
<td>@item.Product.UnitPrice</td>
<td>`enter code here`
@Html.TextBox("QuantityBox", item.Quantity)
</td>
</tr>
}
<input type="submit" id="submit" name="Update" value="Update" />
}
答案 2 :(得分:0)
我会移动整个Foreach代码块
@foreach (var item in Model)
{
<tr>
<td>@item.ProductId</td>
<td>@item.Product.ProductName</td>
<td>@item.Product.UnitPrice</td>
<td>
@Html.TextBox("QuantityBox", item.Quantity)
</td>
</tr>
}
进入Using语句:否则您在控制器中返回的模型将不包含用户在视图中提交的更新值。
换句话说:控制器中所需的值必须位于提交按钮所在的“使用”语句中。
答案 3 :(得分:-1)
您的代码应如下所示
@using (Html.BeginForm("UpdateCart", "Cart", FormMethod.Post))
{
@for(i=0;i< Model.item.count ;i++)
{
<tr>
<td>@item.ProductId</td>
<td>@item.Product.ProductName</td>
<td>@item.Product.UnitPrice</td>
<td>
@Html.TextBoxFor(m=>m.item[i].Quantity)
</td>
</tr>
}
//Update Button
@Html.AntiForgeryToken()
<input type="submit" id="submit" name="Update" value="Update" />
}
然后,您将通过发布在控制器中获取这些值 需要正确使用表单标签让我知道它是否有效 如果您想了解MVC-4中的网址重写,请访问http://grandhah.blogspot.in/