【问题标题】:Timespan Custom Model Binder时间跨度自定义模型活页夹
【发布时间】:2018-07-25 02:09:52
【问题描述】:

我有一个来自剃须刀的时间字符串类型(例如:下午 5:00),我想在将它传递给控制器​​时将其绑定到 timespan

示例代码:

剃须刀:

@model Project.Models.MyModel

@Html.TextBoxFor(m => m.Time, new { @class = "sTime" , @id = "txtTime" })


<script type="text/javascript">
    $(function () {   
        $(".sTime").kendoTimePicker({
            format: "h:mm tt",
            parseFormats: ["HH:mm"]
        });
        $("#txtTime").data("kendoTimePicker").value("@Model.Time");
    });
 </script>

控制器:

[HttpPost]
public ActionResult Edit(MyModel model)
{
    //some code here.
    return View();
}

型号:

 public class MyModel
 {
     public TimeSpan Time { get; set; }
 }

现在,问题是时间无法从剃须刀绑定到控制器。发布值始终为 {00:00:00}。

如何使用自定义模型绑定器来实现?

【问题讨论】:

  • 提供你想要实现的代码?
  • 我已经编辑了我的问题。谢谢
  • 使用textboxforinsted texbox

标签: c# asp.net-mvc kendo-timepicker


【解决方案1】:

您可以使用textboxfor()hiddenfor() 将值传递给您的controller

@{ 
    var modelList = (List<MyModel>)ViewBag.List;                                      
} 

@foreach (var item in modelList) {
    @Html.TextBox("time", item.Time.HasValue ? item.Time.Value.ToString() : 
    "", new { @class = "sTime" })
   @Html.HiddenFor(m=>m.Time) //just add this line with your model value.
}

<script type="text/javascript">
    $(function () {   
        $(".sTime").kendoTimePicker({
            format: "h:mm tt",
            parseFormats: ["HH:mm"]
        });
    });
 </script>

【讨论】:

  • 抱歉,我的代码出错了。它实际上使用 textboxfor。有人建议我为时间跨度使用自定义绑定器,以便将其绑定到我的模型。从 razor 开始,它会经过一串时间(下午 4:00)。
  • 你得到预期的输出了吗?
  • 是的,模型是timespan类型但是返回类型是string
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多