我被代码中一个恼人的问题困住了,但是解决了,但我很困惑。我正在使用DATE FROM然后,它选择了每个日期的所有员工记录,因为我设置了这样的条件,如果DatFrom和TO是空的,那么选择所有的结果,就像我在IF块中提到的那样。这一切都是由于FORMMETHOD.POST,当我写FORMMETHOD.GET时,它开始正常工作,为什么?
那么如何正确地实现它呢?
public ActionResult ShowCalTextBox(String DateFrom, String DateTo)
{
if (DateFrom != "" && DateTo == "")
{
IEnumerable<GetEmpRec_DateResult> EmpRec_DateFrom = DataContext.GetEmpRec_Date(DateFrom, null).ToList();
ViewBag.Dates = "Records for"+" "+ DateFrom ;
return View(EmpRec_DateFrom);
}
else if (DateFrom == "" && DateTo != "")
{
IEnumerable<GetEmpRec_DateResult> EmpRec_DateTo = DataContext.GetEmpRec_Date(null, DateTo).ToList();
ViewBag.Dates = "Records for" + " " + DateTo;
return View(EmpRec_DateTo);
}
else if (DateFrom != "" && DateTo != "")
{
IEnumerable<GetEmpRec_DateResult> EmpRec_ByDate = DataContext.GetEmpRec_Date(DateFrom, DateTo).ToList();
ViewBag.Dates = "Records from" + " " + DateFrom +" "+"to"+" "+DateTo;
return View(EmpRec_ByDate);
}
else if (DateFrom == "" && DateTo == "")
{
IEnumerable<GetEmpRec_DateResult> EmpRec_Default = DataContext.GetEmpRec_Date(null, null).ToList();
ViewBag.Dates = "No date selection";
return View(EmpRec_Default);
}
return View();
}
public ActionResult About()
{
return View();
}意见:
@using EmployeeAttendance_app.Models
<div>
@using (Html.BeginForm("ShowCalTextBox", "Home", FormMethod.Post))
{
<label id="lblFrom">From</label>
<input type="text" id="TxtBoxFrom" name="DateFrom" />
<label id="lblTo">To</label>
<input type="text" id="TxtBoxTo" name="DateTo" />
<br />
<br />
<button type="submit" id="btnSubmitDate" name="btnSubmit">Submit</button>
}
</div>
<div>
<h4>@ViewBag.Dates</h4>
<br />
@{
var grid = new WebGrid(ViewData.Model, rowsPerPage: 20, canPage: false);
}
<div id="AllEmpGrid_ByDate">
@grid.GetHtml(columns: grid.Columns(
grid.Column("EmplID", "Employee ID"),
grid.Column("EmplName","Employee Name"),
grid.Column("ShiftID", "Shift ID"),
grid.Column("DateVisited", "Date of Visit"),
grid.Column("InTime", "In Time"),
grid.Column("TimeOut", "Time Out"),
grid.Column("OverTime", "Over Time"),
grid.Column("TotalWorkingTime", "Total Working Time")
))
</div>
</div>发布于 2014-02-01 10:47:39
代码不能工作的原因很简单。您有一个html <form>,其中放置了开始日期和结束日期输入字段。另一方面,网格是完全分开的。如果使用POST,则在这些文本框中输入的值将在请求正文中发送,而不会在当前url中看到。因此,当WebGrid呈现时,它无法为分页链接生成正确的值。之所以如此,是因为当它生成这些链接时,它包含了当前请求url中的所有查询字符串参数。
另一方面,当您切换到使用GET谓词的表单时,文本框的值就会作为查询字符串参数成为当前url的一部分,并且当WebGrid呈现分页链接时,它会将它们提取出来。这是实现这个的正确方法:
@using (Html.BeginForm("ShowCalTextBox", "Home", FormMethod.Get))
{
...
}如果您使用POST,WebGrid绝对无法知道您的页面中还有其他html <form>,而pick不能选择这些值。
https://stackoverflow.com/questions/21496842
复制相似问题