通过Javavscript将DatePicker值传递给C#控制器

Passing DatePicker value via Javavscript to C# Controller

本文关键字:控制器 值传 Javavscript DatePicker 通过      更新时间:2023-09-26

我有一个引导数据选择器,我需要使用javascript将值传递给控制器中的C#代码。我知道如何用javascript调用控制器内部的函数,但我不确定如何传递日期选择器的值。这一切都需要点击一下按钮。这是我的日期选择器的代码:

<div class="row spiff-datepicksection">
            <div class="col-lg-6 pull-right">
                <div class="col-sm-5 col-lg-offset-4">
                    <div class="form-group">
                        <div class="input-group date">
                            <input id="datetimepicker1" type="text" class="form-control" id="startDate" />
                            <span class="input-group-addon">
                                <span class="glyphicon glyphicon-calendar"></span>
                            </span>
                        </div>
                    </div>
                </div>
                <div class="col-lg-3">
                    <input class="spiffdate-btn" type="submit" value="Submit" />
                </div>
            </div>
        </div>

这是我的javascript:

 <script>
    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
        var wrongid = $('.tab-content .active').attr('id');
        $('a[data-toggle="tab"]').removeClass("active");
        $(this).addClass("active"); 
        var correctid = $(this).data("id"); 
        alert($('.tab-content .active')[0].outerHTML); 
        if (correctid == "delayedspiff")
            $.get("@Url.Action("DelayedSpiffDate", "Dashboard")");
        else 
            $.get("@Url.Action("InstantSpiffDate", "Dashboard")");
    });
</script>

这是我的控制器:

 public ActionResult DelayedSpiffDate(DateTime startDate)
    {
        var available = _appService.GetFeatureStatus(1, "spiffDashboard");
        if (!available)
            return RedirectToAction("DatabaseDown", "Error", new { area = "" });
        var acctId = User.AccountID;
        startDate = DateTime.Today.AddDays(-6);  // -6
        var endDate = DateTime.Today.AddDays(1); // 1
        Dictionary<DateTime, List<SpiffSummaryModel>> dict = new Dictionary<DateTime, List<SpiffSummaryModel>>();
        try
        {
            var properties = new Dictionary<string, string>
            {
                { "Type", "DelayedSpiff" }
            };
            telemetry.TrackEvent("Dashboard", properties);
            dict = _reportingService.GetDailyDelayedSpiffSummaries(acctId, startDate, endDate);
        }
        catch (Exception e)
        {
            if (e.InnerException is SqlException && e.InnerException.Message.StartsWith("Timeout expired"))
            {
                throw new TimeoutException("Database connection timeout");
            }
            var error = _errorCodeMethods.GetErrorModelByTcError(PROJID.ToString("000") + PROCID.ToString("00") + "001", "Exception Getting DelayedSpiff Dashboard View", PROJID, PROCID);
            error.ErrorTrace = e.ToString();
            _errorLogMethods.LogError(error);
            return RedirectToAction("index", "error", new { error = error.MaskMessage });
        }
        var spiffDateModels = new List<DelayedSpiffDateModel>();
        foreach (var entry in dict)
        {
            var spiffDateModel = new DelayedSpiffDateModel();
            spiffDateModel.Date = entry.Key;
            spiffDateModel.Carriers = new List<DelayedSpiffCarrierModel>();
            foreach (var item in entry.Value)
            {
                var spiffCarrierModel = new DelayedSpiffCarrierModel();
                spiffCarrierModel.Carrier = item.CarrierName;
                spiffCarrierModel.CarrierId = item.CarrierId;
                spiffCarrierModel.ApprovedSpiffTotal = item.ApprovedSpiffTotal;
                spiffCarrierModel.EligibleActivationCount = item.EligibleActivationCount;
                spiffCarrierModel.IneligibleActivationCount = item.IneligibleActivationCount;
                spiffCarrierModel.PotentialSpiffTotal = item.PotentialSpiffTotal;
                spiffCarrierModel.SubmittedActivationCount = item.SubmittedActivationCount;
                spiffCarrierModel.UnpaidSpiffTotal = item.UnpaidSpiffTotal;
                spiffDateModel.Carriers.Add(spiffCarrierModel);
            }
            spiffDateModels.Add(spiffDateModel);
        }
        spiffDateModels = spiffDateModels.OrderByDescending(x => x.Date).ToList();
        return PartialView(spiffDateModels);
    }

目前startdate设置为datetime.today。我需要它从日期选择器中获取日期。如果需要任何进一步的信息,请告诉我。谢谢

在您的javascript中,添加此行以获取日期选择器文本框的值(顺便说一句,您的日期选择器上有两个id属性):

var startDate = $('#startDate').val();

然后把它和你的$一起传递。得到这样的电话:

$.get('@Url.Action("DelayedSpiffDate", "Dashboard")', { startDate: startDate });