将表单的值从视图传递给控制器

时间:2012-05-11 08:06:38

标签: asp.net-mvc-3 view controller parameter-passing

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

这是我的观点:

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

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

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

2 个答案:

答案 0 :(得分:0)

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

例如:

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

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

答案 1 :(得分: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)}