我有这个
<%=Model.StartDate%>
<%=Html.Hidden("StartDate", Model.StartDate)%>
输出:
2010-05-11 11:00:00 +01:00
<input type="hidden" value="2010-03-17 11:00:00 +01:00" name="StartDate" id="StartDate">
什么......
这是一种分页机制,因此隐藏值在第一页上有效,我已经能够前进到下一页。但由于这些值不能正确更新,因此它就会结束。
我需要做什么?
使用firefox。
更新 - 更多代码
using (Html.BeginForm("Program", "Activities", null, FormMethod.Get, new { @name = "ProgramForm", id = "ProgramForm" }))
{
viewModel.StartDate = pagingService.StartDate;
return View(viewModel);
更新 - 完成操作
[Authorize]
public ActionResult Program(string[] submit)
{
var viewModel = new ActivityProgramViewModel { UserID = LoggedInUser.UserID };
viewModel.Fresh = true;
TryUpdateModel(viewModel);
var pagingService = new OccurencePagingService(LoggedInUser.AllActivities.Where(a => a.StartTime != null));
if (!viewModel.Fresh)
{
pagingService.StartDate = ((DateTimeOffset)viewModel.StartDate);
pagingService.EndDate = ((DateTimeOffset)viewModel.EndDate);
}
if (submit != null)
if (submit.Contains("MoveBack"))
pagingService.MoveBack();
else if (submit.Contains("MoveForward"))
pagingService.MoveForward();
ViewData.Model = viewModel;
viewModel.Occurrences = pagingService.GetOccurences();
viewModel.Fresh = false;
viewModel.HasLess = pagingService.HasLess;
viewModel.HasMore = pagingService.HasMore;
viewModel.StartDate = pagingService.StartDate;
viewModel.EndDate = pagingService.EndDate;
return View();
}
答案 0 :(得分:4)
第一个使用Model对象,第二个使用现有的ModelState。在生成视图之前查看ModelState值。它可以为这个领域带来价值。 MVC授予的Html帮助程序使用ModelState生成表单字段。它有助于在回发后重新创建值。
要解决此类问题,请使用POST-REDIRECT-GET模式或仅通过GET传递查询参数。
答案 1 :(得分:0)
我认为&lt;%= Html.Hidden(“StartDate”,Model.StartDate)%&gt;在这里不合适。
Html Helpers尝试通过检查发布/路由数据将数据保存在UI中,就像输入的那样。请不要问我有人会如何在隐藏的字段中输入数据。
你想要一些不同的东西:你想把数据设置为Model.StartDate而不关心帖子/路线中的内容。
我会使用<input value="<%=Model.StartDate%>" name="StartDate" />
。