MVC Html.HIddenFor值未传递给模型

时间:2015-09-03 19:16:14

标签: c# asp.net-mvc jquery-ui

我正在使用JQueryUI Datepicker,这是我在视图中使用的代码

@model myprojectName.WebSite.DataModel.AvailableDate

<script>
$(function () {
    $("#datepicker").datepicker();
});


</script>
<h3 class="headerColorWhite">Book a session with Mike</h3>
<p class="mainText">Select a date that you wish to train with Mike</p>

 @using (Html.BeginForm())
{
<div class="editor-field left" id="datepicker">
    @Html.HiddenFor(model => model.DateAvailable, new {@class = "datepicker"})
    @Html.ValidationMessageFor(model => model.DateAvailable)
</div>

<div class="col-md-10 left">
    <input type="submit" value="Search Available Slots" class="btn btn-default left" />
</div>
}

点击提交\搜索可用插槽按钮时,似乎没有将我选择的日期发送回模型。

这是将日期传递给

的模型
public partial class AvailableDate
{
    private DateTime? _DateAvailable;

    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
    public System.DateTime DateAvailable
    {
        get { return _DateAvailable ?? DateTime.Today; }
        set { _DateAvailable = value; }
    }
}

您能否告诉我出错的地方以及我需要做些什么才能解决这个问题。

---------------编辑以显示获取和发布方法---------------

// GET: Bookings
    public ActionResult Index()
    {

        return View();
    }
    [HttpPost]
    public ActionResult Index(AvailableDate availableDate)
    {
        return View();
    }

2 个答案:

答案 0 :(得分:2)

目前,隐藏字段DateAvailable将始终设置为null。当您从数据选择器中单击日期时,它当前不会更新隐藏字段。

所以,而不是

$(function () {
    $("#datepicker").datepicker();
});

尝试:

$(function() {
    $("#datepicker").datepicker({
        dateFormat: 'dd-mm-yy',
        onSelect: function (dateText, e) {
            $("#DateAvailable").val($(this).val());
        }
    });
});

这将为隐藏字段分配值。另外,正如我们的转换中所讨论的那样,日期需要格式化,如上面dateFormat: 'dd-mm-yy'所定义。

答案 1 :(得分:1)

您确定所选日期是否已应用于隐藏字段?也许你应该使用altField

$( "#datepicker" ).datepicker({
  altField: ".datepicker"
});

其中.datepicker将是您为隐藏字段注入的类。或者更好地使用其ID并应用格式:

$( "#datepicker" ).datepicker({
  altField: "#DateAvailable",
  altFormat: "dd-mm-yy" // added for conversion compatibility
});

请参阅此fiddle