【问题标题】:DateTime field is null when passing to controller in ASP.NET MVC5在 ASP.NET MVC5 中传递给控制器​​时,DateTime 字段为空
【发布时间】:2019-12-28 03:10:16
【问题描述】:

我的应用程序中有一个使用AjaxBeginForm 的搜索表单。同样,我有一个日期字段 (DateTime),我在其中使用 datePicker 引导程序。

我的表单如下所示:

@using (Ajax.BeginForm("Index", "Pedido", new AjaxOptions { HttpMethod = "Get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divPedidos" }, new { @class = "form-inline" }))
{
    @Html.TextBox("pesquisarRascunhoId", 0, new { style = "display: none" })
    <div class="row">
        <div class="col-sm-4">
            <p>Data emissão</p>
            <div class="input-group date col-sm-5">
                <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                @Html.EditorFor(model => model.PedidoFilter.EmissaoInicial, new { htmlAttributes = new { @class = "form-control input-sm datepicker" } })
            </div>
            a
            <div class="input-group date col-sm-5">
                <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                @Html.EditorFor(model => model.PedidoFilter.EmissaoFinal, new { htmlAttributes = new { @class = "form-control input-sm datepicker" } })
            </div>
        </div>
    <div class="btn-search">
        <p class="demo-button">
            <button type="submit" class="btn btn-success"><i class="fa fa-search"></i><span>Pesquisar</span></button>
        </p>
    </div>
}

用于在 dd / mm / yyyy 中格式化我的日期的 javaScript 如下所示:

$(".datepicker").datepicker({
    format: "dd/mm/yyyy",
    language: "pt-BR",
    autoclose: true
});

我的实体如下所示:

public class PedidoFilter
{
   public DateTime? EmissaoInicial { get; set; }
   public DateTime? EmissaoFinal { get; set; }
}

最后我的控制器看起来像这样:

public ActionResult Index(PedidoResult pedidoResult, 
{
    var pedido = _service.FindAll(pedidoResult.PedidoFilter);

    return View(pedido);
}

我在我的 Web.config 中这样定义我的语言文化:

<globalization uiCulture="pt-BR" culture="pt-BR" enableClientBasedCulture="true" />
  1. 我的表单的所有字段都到达了我的控制器,但我的日期字段始终为空,格式为 dd/mm/yyyy,我在我的 datepicker js 中定义。

  2. 如果我以mm/dd/yyyy 格式输入日期,它将传递给我的控制器。

我的问题是:

如何以dd/mm/yyyy 格式传递我的日期字段并将它们放在我的控制器上而不使它们为空?

【问题讨论】:

  • 你的视图模型是什么?这就是您在帖子中发送的内容
  • 我的模型是 PedidoResult,其中包含一个 PedidoFilter,当我的 DateTime 被声明时。 tks
  • [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]装饰DateTime字段以设置格式。我怀疑可能是因为日期格式不同。

标签: c# asp.net-mvc datetime datepicker


【解决方案1】:

我认为可以使用 Culture 或通过以下代码示例更改日期格式:C# 取一年中的第一个月之后的日期。你解决这个问题。使用 flatpickr 或其他日期选择器。

&lt;input asp-for="Birthdate" type="datetime" data-name="date-picker" class="form-control" autocomplete="off"&gt;

let birthDay = flatpickr(document.getElementById('Birthdate'), {
            enableTime: true,
            dateFormat: 'd-m-Y',
        });

   $('#myform').submit((e) => {
        $('#Birthdate').val(birthDay.latestSelectedDateObj.toLocaleString());
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2020-07-24
    • 2011-01-01
    • 2020-05-24
    • 2011-07-27
    • 2014-02-12
    • 2023-03-29
    相关资源
    最近更新 更多