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
并将其绑定到隐藏在我视野中的领域。并返回带有newBeginDate
但隐藏字段值未更改的模型
我的模型
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。