0

我如何将表单的值(我假设)一个日期字符串传递给控制器​​......

这是我的看法:

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

});

</script>
@model IEnumerable<CorReservation.Models.Reservation>
@{
ViewBag.Title = "Index";
}
<div class="divRightSide">

<div>
    <div class="datepicker">
    </div>
    <form action="/" title="fff">
    <input type="text" class="alternate" readonly="readonly" />
    </form>
</div>
// do something eg.  foreach (var item in Model)
        { @Html.DisplayFor(modelItem => item.Date)}

这是我的控制器:我想将从日期选择器中选择的日期传递给控制器​​,然后控制器将返回一个 Ienumerable 的保留...

    DateTime date = System.DateTime.Now;
    private ReservationEntities db = new ReservationEntities();

    public ViewResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(string dateInput)
    {

        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);
    }
4

2 回答 2

0

有两种方法可以做到这一点。使表单输入名称属性与控制器中的预期属性匹配。

例如:

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

或者,如果有很多输入值,请使用模型。

于 2012-05-11T08:09:43.237 回答
0

它是根据您要提交的 HTML 字段的“名称”属性自动完成的。

将您的表格更改为

<form action="/" title="fff">
    <input name="dateInput" type="text" class="alternate" readonly="readonly"  />
</form>

它应该像那样工作。

此外,当您使用 Razor 语法时,您可以像这样使用 Razor HTML 帮助程序

@model IEnumerable<CorReservation.Models.Reservation>
@{
    ViewBag.Title = "Index";
}
<div class="divRightSide">

<div>
    <div class="datepicker">
    </div>
    @using(@Html.BeginForm("<your controller name>", "<your action name e.g. Index>"){
      Html.TextBox("dateInput", "", new { @readonly="readonly", @class="alternate" })
    }
</div>
// do something eg.  foreach (var item in Model)
        { @Html.DisplayFor(modelItem => item.Date)}
于 2012-05-11T08:10:49.870 回答