2017-06-15 61 views
1

我有一个MVC视图与fromDate和toDate以及引导日期选择器。 日期字段最初显示为'2017年6月15日' 但是,当我执行搜索时,页面1正确显示,但是当我转到任何其他页面时,日期重置并显示为'06年1月6日'。日期字段丢失时分页MVC

任何帮助将不胜感激。 谢谢。

控制器:

using PagedList; 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Net; 
using System.Web; 
using System.Web.Mvc; 
using WebApplication5.Models; 


namespace WebApplication5.Controllers 
{ 
    public class testController : Controller 
    { 
     private JobSubmissionEntities1 db = new JobSubmissionEntities1(); 

     public ViewResult Index(string currentFilter, string searchString, DateTime? fromDate, DateTime? toDate, int? page) 
     { 


      if (!fromDate.HasValue) fromDate = DateTime.Now.Date.AddDays(-1); 
      if (!toDate.HasValue) toDate = DateTime.Now.AddDays(5); 
      if (toDate < fromDate) toDate = DateTime.Now.AddDays(5); 

      ViewBag.fromDate = fromDate; 
      ViewBag.toDate = toDate; 

      //IF searchString is Empty 
      if (searchString != null) 
      { 
       page = 1; 
      } 
      else 
      { 
       searchString = currentFilter; fromDate = ViewBag.fromDate; toDate = ViewBag.toDate; 
      } 

      ViewBag.CurrentFilter = searchString; 


      var JobDetails = from s in db.JobDetails 
          select s; 

      //if searchString IS NOT empty 
      if (!String.IsNullOrEmpty(searchString)) 
      { 
       JobDetails = JobDetails.Where(s => 
       (s.JobNo.Equals(searchString) && 
       s.SubmissionDate >= fromDate && s.SubmissionDate < toDate)); 
      } 
      else 
      { 
       JobDetails = JobDetails.Where(s => (
       s.SubmissionDate >= fromDate && s.SubmissionDate < toDate)); 
      } 
      int pageSize = 10; 
      int pageNumber = (page ?? 1); 

      return View(JobDetails.OrderBy(i => i.JobNo).ToPagedList(pageNumber, pageSize)); 
     } 

    } 
} 

检视:

@model PagedList.IPagedList<WebApplication5.Models.JobDetail> 

@using PagedList.Mvc; 
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" /> 
@{ 
    Layout = "~/Views/Shared/_Layout_Wide.cshtml"; 
} 

    ViewBag.Title = "Index"; 
} 
@section DatePicker { 

    <link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
    <link href="~/Content/bootstrap-datetimepicker.min.css" rel="stylesheet" /> 
    <script src="~/Scripts/jquery-1.10.2.min.js"></script> 
    <script src="~/Scripts/moment-with-locales.min.js"></script> 
    <script src="~/Scripts/bootstrap.min.js"></script> 
    <script src="~/Scripts/bootstrap-datetimepicker.min.js"></script> 
} 

<h2>Index</h2> 

@{ 

    var fromDate = (DateTime)ViewBag.fromDate; 
    var toDate = (DateTime)ViewBag.toDate; 
} 


@using (Html.BeginForm("Index", "Test", FormMethod.Get)) 
{ 


    /***FromDate***/ 

    <div class="container"> 
     <div class="row"> 
      <div class='col-sm-3'> 
       <div class="form-group"> 
        <div class='input-group date' id='fromDate'> 
          <div>@Html.TextBox("fromDate", string.Format("{0:dd MMM yyy}", fromDate), new { @class = "form-control", })</div> 
          <span class="input-group-addon"> 
          <span class="glyphicon glyphicon-calendar"></span> 
         </span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 



    /***toDate***/ 

    <div class="container"> 
     <div class="row"> 
      <div class='col-sm-3'> 
       <div class="form-group"> 
        <div class='input-group date' id='toDate'> 
         <div>@Html.TextBox("toDate", string.Format("{0:dd MMM yyy}", toDate), new { @class = "form-control", })</div> 
          <span class="input-group-addon"> 
          <span class="glyphicon glyphicon-calendar"></span> 
         </span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

    /***searchString***/ 

    <div class="container"> 
     <div class="row"> 
      <div class='col-sm-3'> 
       <div class="form-group"> 
        @Html.Editor("SearchString", ViewBag.CurrentFilter as string, new { htmlAttributes = new { @class = "form-control" } }) 
       </div> 
      </div> 
     </div> 
    </div> 

    /***Submit***/ 

    <div class="container"> 
     <div class="row"> 
      <div class='col-sm-3'> 
       <div class="form-group"> 
        <input type="submit" class="btn btn-success" value="Search" /> 
       </div> 
      </div> 
     </div> 
    </div> 

    <hr /> 
} 


<table class="table-bordered"> 
    <tr style="background-color:black"> 
     <th> 
      @Html.ActionLink("Job No", "Index", new { style = "color:white" }) 
     </th> 
     <th> 
      @Html.ActionLink("Submission Date", "Index", null, new { style = "color:white" }) 
     </th> 
     <th> 
      @Html.ActionLink("Job Title", "Index", null, new { style = "color:white" }) 
     </th> 
     <th> 
      @Html.ActionLink("Article", "Index", null, new { style = "color:white" }) 
     </th> 
     <th> 
      @Html.ActionLink("Status", "Index", null, new { style = "color:white" }) 
     </th> 

     <th></th> 
    </tr> 




    @foreach (var item in Model) 
      { 

       //Highlight Rows Green, Yellow or Red Dependant on Status - Yellow means job has not finished processing 
       string statusCheck = (item.Status); 
       string style = ""; 
       if (statusCheck.Contains("Status message 0003:Job finished")) 
       { 
        style = "background-color:#e6fff2"; 
       } 
       else if (statusCheck.Equals("0")) 
       { 
        style = "background-color:#ffffcc"; 
       } 
       else 
       { 
        style = "background-color:#ff8080"; 
       } 





       <tr style="@style"> 


        <td> 
         @Html.DisplayFor(modelItem => item.JobNo) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.SubmissionDate) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.JobDesc) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.Article) 
        </td> 

        <td> 
         @Html.DisplayFor(modelItem => item.Status) 
        </td> 
        <td> 
         @Html.ActionLink("Edit", "Edit", new { id = item.SubmissionID }) | 
         @Html.ActionLink("Details", "Details", new { id = item.SubmissionID }) | 
         @Html.ActionLink("Delete", "Delete", new { id = item.SubmissionID }) 
        </td> 
       </tr> 
    } 



</table> 

<br /> 
     Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount 

     @Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, fromDate = ViewBag.fromDate, toDate = toDate })) 

     @section scripts{ 
      <script type="text/javascript"> 
       $(function() { 
        $('#fromDate').datetimepicker({ 
         format: 'DD MMMM YYYY', 
        }); 
       }); 
      </script> 
      <script type="text/javascript"> 
      $(function() { 
       $('#toDate').datetimepicker({ 
        format: 'DD MMMM YYYY' 
       }); 
      }); 
      </script> 
     } 

回答

0

@ Html.TextBox()可以拉值出的ModelState或ViewData的的。

这样你就可以在日期值绑定到文本框中手动

请参考以下链接:https://stackoverflow.com/a/29369965/3397630为接受的解决方案,它类似于您的问题。

希望这将有助于

感谢

KARTHIK

+0

太谢谢你了。这是固定的:-) – user3674481

+0

我的快乐和与他人的快乐分享.. :) –