微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在不使用任何查询参数的情况下制作“下一步”和“上一步”按钮?

如何解决在不使用任何查询参数的情况下制作“下一步”和“上一步”按钮?

| 我想显示三个月的日历,用“下一步”按钮显示未来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 举报,一经查实,本站将立刻删除。