【问题标题】:MVC datetime parameter for Controller & View控制器和视图的 MVC 日期时间参数
【发布时间】:2016-04-14 08:42:09
【问题描述】:

我想知道是否有人可以帮助我对 MVC 非常陌生,在观看了一些有关 MVA 的视频后,我正在尝试基于现有模型创建自己的新视图和控制器。我似乎无法在视图上显示搜索结果。 (我会在稍后调整 linq 查询)

所以我的模型是:

[Key]
    public int BookingID { get; set; }
    public int RoomID { get; set; }
    public DateTime Arrival_Date { get; set; }
    public DateTime Departure_Date { get; set; }

我在控制器中添加了一个新的动作结果:

public ActionResult Availability(DateTime? StartDate)
    {
        ViewBag.StartDate = DateTime.Now.AddDays(2);

        var GetBookings = from m in db.Bookings
                          where m.Arrival_Date.Date <= (StartDate)
                          select m;

        if (!StartDate.HasValue)
        {
            GetBookings = db.Bookings.Where(x => x.Arrival_Date <= StartDate);
        }

        return View(GetBookings);

    }

最后添加了一个名为 Availability 的视图,指向带有输入的模型:

@model IEnumerable<SuiteUI.Models.Booking>

@using (Html.BeginForm()) {

    <input type="datetime" value="@(ViewBag.StartDate)" />
    <input type="submit" value="Filter" class="btn btn-default" />
</p>

}

 <p>
@Html.ActionLink("Create New", "Create")

<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.RoomID)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Arrival_Date)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Departure_Date)
    </th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.RoomID)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Arrival_Date)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Departure_Date)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.BookingID }) |
        @Html.ActionLink("Details", "Details", new { id=item.BookingID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.BookingID })
    </td>
</tr>

}

希望到目前为止这还不算太糟糕,我想我缺少一个 POST 操作来处理显示结果,但这是我卡住的地方,任何想法或建议都将不胜感激!

【问题讨论】:

    标签: model-view-controller viewmodel


    【解决方案1】:

    已排序,通过从 GET 请求中删除参数,并添加一个带有参数的 POST Actionresult,这现在正在工作

     [HttpGet]
        public ActionResult Availability()
        {
            ViewBag.StartDate = DateTime.Now;
            return View(db.Bookings.ToList());
    
        }
    
    [HttpPost]
         public ActionResult Availability(DateTime? StartDate)
         {
    
             var GetBookings = from m in db.Bookings
                               where DbFunctions.TruncateTime(m.Arrival_Date) <= (StartDate)
                               select m;
    
             if (!StartDate.HasValue)
             {
                 GetBookings = db.Bookings.Where(x => DbFunctions.TruncateTime(x.Arrival_Date) <= StartDate);
             }
    
             return View(GetBookings);
    
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多