我正在尝试在我的视图中实现Next
按钮以转到下一条记录。
当我点击按钮时,它只是在我的控制器中调用当前项而不是下一个的Details
动作。
因此,如果我查看Sample
1并点击Next
,我会在{{1}中调用sampleNumber
时看到1
仍为Details
}}
以下是SampleController
中按钮的代码:
Details.cs.html
@{
if (Model.Pallet.Samples.Count > Model.SampleNo)
{
using (Html.BeginForm("Details", "Sample"))
{
@Html.Hidden("sampleNumber", Model.SampleNo + 1)
<input type="submit" value="Next" class="pull-right" />
}
}
}
方法有签名:
Details
非常感谢任何建议
答案 0 :(得分:1)
您需要使用
声明一个新变量@{
var next_record = Model.SampleNo + 1;
}
并更改
@Html.Hidden("sampleNumber", Model.SampleNo + 1)
到
@Html.Hidden("sampleNumber", @next_record)
答案 1 :(得分:1)
从表面上看,您已发布到动作Details
,但我不确定您是如何将该值传递给它的。
所以我看到了解决方案的两个部分。
1)您应该将视图模型传递给控制器操作。
这样做的好处是能够获取值,同时递增计数器,从视图中删除该逻辑。
下面,ViewModel将与用于视图的@model
部分的类型相同。
public ActionResult Details(ViewModel vm)
{
// Other logic to get details
vm.SampleNo++;
return View(vm);
}
2)sampleNumber
的隐藏字段未绑定到视图模型,因此当您发布帖子时,传递的值为Model.SampleNo
而不是Model.SampleNo + 1
,因为我怀疑您期待它。
您应该将@Html.Hidden...
更改为@Html.HiddenFor(Model.SampleNumber)
以获得正确的绑定。