首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工作但不工作

工作但不工作
EN

Stack Overflow用户
提问于 2014-02-01 10:25:30
回答 1查看 49关注 0票数 0

我被代码中一个恼人的问题困住了,但是解决了,但我很困惑。我正在使用DATE FROM然后,它选择了每个日期的所有员工记录,因为我设置了这样的条件,如果DatFromTO是空的,那么选择所有的结果,就像我在IF块中提到的那样。这一切都是由于FORMMETHOD.POST,当我写FORMMETHOD.GET时,它开始正常工作,为什么?

那么如何正确地实现它呢?

代码语言:javascript
复制
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();
        }

意见:

代码语言:javascript
复制
@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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-01 10:47:39

代码不能工作的原因很简单。您有一个html <form>,其中放置了开始日期和结束日期输入字段。另一方面,网格是完全分开的。如果使用POST,则在这些文本框中输入的值将在请求正文中发送,而不会在当前url中看到。因此,当WebGrid呈现时,它无法为分页链接生成正确的值。之所以如此,是因为当它生成这些链接时,它包含了当前请求url中的所有查询字符串参数。

另一方面,当您切换到使用GET谓词的表单时,文本框的值就会作为查询字符串参数成为当前url的一部分,并且当WebGrid呈现分页链接时,它会将它们提取出来。这是实现这个的正确方法:

代码语言:javascript
复制
@using (Html.BeginForm("ShowCalTextBox", "Home", FormMethod.Get))
{
    ...
}

如果您使用POST,WebGrid绝对无法知道您的页面中还有其他html <form>,而pick不能选择这些值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21496842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档