1

我正在使用 Kedno 网格开发 MVC 应用程序。我有一个带有属性的模型项目:

public bool IsPaid { get; set; }
public Nullable<DateTime> PaymentDate { get; set; }

在视图中的 Kedno 网格中:

columns.Bound(c => c.PaymentDate).Format("{0:dd-MMM-yyyy}");

当我在网格中编辑并将 IsPaid 设置为 false 时,逻辑必须将 PaymentDate 设置为 null。

例如,我有一个带有 PaymentDate 22-Sep-2016 和 IsPaid 的项目true

在 Kendo 网格中编辑此 Item 设置 IsPaid 为 false 后,当我单击 Save Changes 时,将调用控制器中的方法 Update:

public ActionResult Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<ItemViewModel> items)
{
        if (ModelState.IsValid)
        {
            //
        }
}

但 ModelState 无效:"The value '9/22/2016 12:00:00 AM' is not valid for...". 如果 PaymentDate 为 01-Sep-2016,则 ModelState 有效。

另外,我遵循了全球化部分中的步骤。

在 web.config 中:

<globalization uiCulture="bg-BG" culture="bg-BG"></globalization>

在控制器中:

protected override void Initialize(RequestContext requestContext)
{
    Thread.CurrentThread.CurrentCulture =
        Thread.CurrentThread.CurrentUICulture =
            new CultureInfo(requestContext.HttpContext.Request.UserLanguages[0]);

    base.Initialize(requestContext);
}

在视图中:

@{
    var culture = System.Globalization.CultureInfo.CurrentCulture.ToString();
}

<script src="@Url.Content("~/scripts/cultures/kendo.culture." + culture + ".min.js")"></script>

<script>
    kendo.culture("@culture");
</script>

有什么建议么?

非常感谢!

4

1 回答 1

0

该问题与服务器和客户端上的匹配文化无关。至于我的观察,您正确地遵循了这篇文章。

模型视图无效的原因是您将 Column 的 Format 方法设置为类似于“ dd-MMM-yyyy ”的格式。尝试将格式设置为:

columns.Bound(c => c.PaymentDate).Format("{0:dd/mm/yyyy}");

或者,您可以出于测试目的删除格式并检查日期是否正确传递。你可以稍后放回去。

于 2018-11-07T17:29:04.543 回答