如何解决在不使用任何查询参数的情况下制作“下一步”和“上一步”按钮?
| 我想显示三个月的日历,用“下一步”按钮显示未来3个月,用“上一步”按钮显示前3个月。我的模型包含一个名为BeginDate
的属性,其值是当前3个月的第一天的日期。下一个按钮,我将三个月添加到ѭ0中,并将其绑定到视图中的隐藏字段。并以新的“ 0”返回模型,但隐藏字段的值未更改。
我的模特
public class MyModel
{
public DateTime BeginDate
{
get;
set;
}
}
我的控制器
[HttpGet]
public ActionResult Index()
{
return View(new MyModel());
}
[HttpPost]
public ActionResult Index(MyModel model)
{
model.BeginDate = model.BeginDate.AddMonths(3);
return View(model);
}
注意我想做到这一点而无需在我的网址中放置任何参数
解决方法
如果要在POST操作中修改其值,则需要将其从模型状态中删除:
[HttpPost]
public ActionResult Index(MyModel model)
{
ModelState.Remove(\"CurrentBegin\");
model.CurrentBegin = DateTime.Parse(Request.Form[\"CurrentBegin\"]).AddMonths(3);
return Index(model);
}
这样做的原因是因为HTML帮助器(例如TextBoxFor,HiddenFor等)将首先查看请求,如果在模型中存在相应的值。因为您处于POST动作中,所以POST主体中有一个旧的CurrentBegin
值,这就是隐藏帮助程序将使用的值,而不是您要放入模型中的值。那是设计使然,这就是助手的工作方式。如果要使用模型的值而忽略POSTed值,则需要将其从模型状态中删除,如图所示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。