0

我有模型属性

 public DateTime SelectedDate { get; set; }
 public DateTime SelectedDateTo { get; set; }

视图有

<input id="Testdate-Field" type="text"  style="width: 125px;" value="@Html.DisplayTextFor(m=>m.SelectedDate)" /> To
   <input id="TestdateTo-Field" type="text"  style="width: 125px;" value="@Html.DisplayTextFor(m=>m.SelectedDateTo)" />

在我有的视图中显示日历

  $("#Testdate-Field").bind("click", function(event) {       
     $( "#Testdate-Field").datepicker();
    });    

      $("#TestdateTo-Field").bind("click", function(event) {       
     $( "#TestdateTo-Field").datepicker();
    });    

现在,2个问题

  1. 当我第一次单击输入框时,日历不会出现,直到我单击其他地方然后在输入框中输入日期。
  2. 当我从日历中选择一个日期时,我的模型属性 SelectedDate 和 SelectedDateTo 不会更改,并且在我阅读它们时保持默认值。我需要做什么才能读取输入日期?

---更新---根据建议添加了这个

 $("#Testdate-Field").datepicker();
 $("#TestdateTo-Field").datepicker();

第一个问题解决了!现在如何将我在日期字段中选择的内容绑定到我的模型属性?

4

1 回答 1

1

对于问题 1,不要将 .datepicker() 代码放在绑定事件中。只需在准备好的文档上执行那些:

<script>
    jQuery(document).ready(function ($) {
        $( "#Testdate-Field").datepicker();
        $( "#TestdateTo-Field").datepicker();
    });
</script>

对于您的第二个问题,使用 Html 帮助器生成您的输入,然后在您的控制器中您可以轻松地绑定它们:而不是在您生成的输入标签中使用 DisplayTextFor,而是使用 TextBoxFor 为您生成输入标签:

视图模型:

public class SampleViewModel
{
    // other properties here
    public DateTime SelectedDate { get; set; }
    public DateTime SelectedDateTo { get; set; }
    // other properties here
}

看法:

@model SampleClassViewModel
@using(Html.BeginForm())
{
    @Html.TextBoxFor(m => m.SelectedDate, new { class = "datepickers" })
    @Html.TextBoxFor(m => m.SelectedDateTo, new { class = "datepickers" })
    <input type="submit" />
}
<script>
    jQuery(document).ready(function ($) {
        $( ".datepickers").datepicker();
    });
</script>

有很多方法可以绑定你的属性,这里有几个......控制器选项1:

[HttpPost]
public ActionResult SomeControllerAction(SampleViewModel model)
{
    // do work...
}

控制器选项 2:

[HttpPost]
public ActionResult SomeControllerAction()
{
    var model = SomeServiceMethodToBuildModel();
    this.TryUpdateModel(model);
    // do work...
}

谢谢!

于 2013-01-21T11:06:20.310 回答