C# 是否在不使用任何查询参数的情况下生成下一个和上一个按钮?

C# 是否在不使用任何查询参数的情况下生成下一个和上一个按钮?,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我想显示三个月的日历,下一步按钮显示下三个月,上一步按钮显示前三个月。我的模型包含一个名为BeginDate的属性,其值是当前三个月的第一天的日期。单击下一步按钮时,我将三个月添加到BeginDate并将其绑定到隐藏在我视野中的领域。并返回带有newBeginDate但隐藏字段值未更改的模型 我的模型 public class MyModel { public DateTime BeginDate { get; set; } } 我的控制

我想显示三个月的日历,下一步按钮显示下三个月,上一步按钮显示前三个月。我的模型包含一个名为
BeginDate
的属性,其值是当前三个月的第一天的日期。单击下一步按钮时,我将三个月添加到
BeginDate
并将其绑定到隐藏在我视野中的领域。并返回带有new
BeginDate
但隐藏字段值未更改的模型

我的模型

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);
}

注意,我不想在我的url中添加任何参数

如果要在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
值,这是隐藏的辅助对象将使用的值,而不是您在模型中放置的值。这是设计的,这就是助手的工作方式。如果要使用模型的值并忽略发布的值,则需要将其从模型状态中删除,如图所示。

例如,“Html.DisplayFor”为什么以前没有查看请求?@Peter Gfader,因为for a string属性如下所示:
@Html.Encode(ViewData.TemplateInfo.FormattedModelValue)
它基本上使用模型的值,而不是modelstate或request。