首页 > 解决方案 > net mvc:发布计算日期不起作用

问题描述

我有一个应用程序,用户可以在其中获得三个关于日期时间的订单建议:

在此处输入图像描述


不要担心年份,只是一个例子。

如果没有适合的建议,用户可以在未来根据最新计算的日期生成其他三个建议。

这只能工作一次。

我的观点:

        @using (Ajax.BeginForm("GenerateSuggestionDates", "Home", new { Area = "Planning" }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "planeditbody" }, new { autocomplete = "off", id = "suggestiondatesform" }))
        {
            @Html.HiddenFor(model => model.LatestDate)
            @Html.HiddenFor(model => model.AssemblyOrderID)
            <i class="fa fa-refresh mt-2 mr-3" style="float: right; color: grey; cursor: pointer;" onclick="$('#suggestiondatesform').submit();"></i>
        }

Model.LatestDate 始终设置为控制器中的最新日期,但该最新日期仅适用一次。

我的控制器:

[HttpPost]
public ActionResult GenerateSuggestionDates(PlanEditSingleViewModel model)
{
    var viewModel = new PlanEditSingleViewModel();
    Dictionary<int, DateTime> suggestions = new Dictionary<int, DateTime>();

    try
    {
        var date = model.LatestDate.AddDays(1);

        var counter = 0;

        while (counter >= 0 && counter < 3)
        {
            if (date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday)
            {
                suggestions.Add(counter, planningService.CheckDesiredDate(date, true, model.AssemblyOrderID, null, true)[0]);
                date = date.AddDays(1);
                counter++;
            }
            else
            {
                date = date.AddDays(1);
            }
        }

        viewModel.Suggestions = suggestions;
        viewModel.LatestDate = date.AddDays(-1);
        viewModel.AssemblyOrderID = model.AssemblyOrderID;

        return PartialView("~/Views/Shared/Modals/PlanEditBodySingle.cshtml", viewModel);
    }
    catch (Exception e)
    {
        return PartialView("~/Views/Shared/Modals/PlanEditBodySingle.cshtml", null);
    }
}

我找不到这里有什么问题。任何提示,提示,建议?提前致谢!

标签: asp.net-mvcdateviewmodel

解决方案


绑定 (?) 似乎有问题。我将代码更改为:

        @using (Ajax.BeginForm("GenerateSuggestionDates", "Home", new { Area = "Planning", LatestDate = Model.LatestDate.ToString(), AssemblyOrderID = Model.AssemblyOrderID }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "planeditbody" }, new { autocomplete = "off", id = "suggestiondatesform" }))
        {
            <i class="fa fa-refresh mt-2 mr-3" style="float: right; color: grey; cursor: pointer;" onclick="$('#suggestiondatesform').submit();"></i>
        }

因此,我编辑了控制器代码。这行得通。


推荐阅读