1

我知道有很多这样的问题,但我真的无法得到答案的解释......这是我的观点......

<script type="text/javascript" language="javascript">
$(function () {
    $(".datepicker").datepicker({ onSelect: function (dateText, inst) { },
        altField: ".alternate"
    });

});
</script>

@model IEnumerable<CormanReservation.Models.Reservation>
@{
ViewBag.Title = "Index";
}

<h5>
    Select a date and see reservations...</h5>
<div>
    <div class="datepicker">
    </div>
    &nbsp;<input name="dateInput" type="text" class="alternate" />
</div>

我想获取输入文本的值...我的输入文本中已经有一个值,因为日期选择器将其值传递给它...我不能做的是将它传递给我的控制器...这是我的控制器:

  private CormantReservationEntities db = new CormantReservationEntities();
    public ActionResult Index(string dateInput )
    {
        DateTime date = Convert.ToDateTime(dateInput);
        var reservations = db.Reservations.Where(r=>r.Date==date).Include(r => r.Employee).Include(r => r.Room).OrderByDescending(r => r.Date);
        return View(reservations.ToList());
    }

我试图在我的主页中列出用户在我主页的日历中选择的日期期间所做的预订......

4

1 回答 1

0

我在您的视图中没有看到表单标签...或者您没有显示整个视图?很难说..但要发布到您的控制器,您应该通过 ajax 调用将值发送到控制器或发布模型。在您的情况下,您的模型是一个IEnumerable<CormanReservation.Models.Reservation>并且您的输入是一个日期选择器,并且看起来它没有绑定到您的 ViewModel。您在什么时候将日期发布回服务器?您是否有带有提交按钮的表单,或者您是否有未显示的 ajax 调用?

这是一个 Ajax 请求的示例,可以调用它来传递您的日期

$(function () {
    $(".datepicker").onselect(function{
          searchByDate();
        })
    });

});

function searchbyDate() {
   var myDate = document.getElementById("myDatePicker");

    $.ajax({
        url: "/Home/Search/",
        dataType: "json",
        cache: false,
        type: 'POST', 
        data: { dateInput: myDate.value },
        success: function (result) {
            if(result.Success) {
               // do something with result.Data which is your list of returned records
            }
        }
    });
}

您的日期选择器控件需要一些东西来引用它

<input id="myDatePicker" name="dateInput" type="text" class="alternate" />

您的操作可能看起来像这样

private CormantReservationEntities db = new CormantReservationEntities();

public JsonResult Search(string dateInput) {
    DateTime date = Convert.ToDateTime(dateInput);
    var reservations = db.Reservations.Where(r=>r.Date==date).Include(r => r.Employee).Include(r => r.Room).OrderByDescending(r => r.Date);
    return View(reservations.ToList());
    return Json(new {Success = true, Data = reservations.ToList()}, JsonRequestBehaviour.AllowGet());
}

更新

如果您想让它成为发布数据并返回视图的标准帖子,那么您需要进行与此类似的更改。

创建一个视图模型

public class ReservationSearchViewModel {
    public List<Reservation> Reservations { get; set; }
    public DateTime SelectedDate { get; set; }
}

修改您的控制器操作以最初加载页面,然后能够发布数据返回视图返回数据

public ActionResult Index() {
    var model = new ReservationSearchViewModel();
    model.reservations = new List<Reservation>();
    return View(model);
}

[HttpPost]
public ActionResult Index(ReservationSearchViewModel model) {
    if(ModelState.IsValid)    
    var reservations = db.Reservations.Where(r => r.Date = model.SelectedDate).Include(r => r.Employee).Include(r => r.Room).OrderByDescending(r => r.Date);
    }
    return View(model)
}

修改您的视图,以便您有一个表单可以发布到 Index HttpPost 操作

@model CormanReservation.Models.ReservationSearchViewModel

<h5>Select a date and see reservations...</h5>
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    @Html.EditorFor(model => model.SelectedDate)
    @Html.EditorFor(model => model.Reservations) // this may need to change to a table or grid to accomodate your data
    <input type="submit" value="Search" />
}
于 2012-05-11T03:29:25.250 回答