通过 Javascript 将 DatePicker 值传递给 C# 控制器
Posted
技术标签:
【中文标题】通过 Javascript 将 DatePicker 值传递给 C# 控制器【英文标题】:Passing DatePicker value via Javavscript to C# Controller 【发布时间】:2016-02-19 00:31:32 【问题描述】:我有一个引导数据选择器,我需要使用 javascript 将值传递给我的控制器中的 C# 代码。我知道如何使用 javascript 调用控制器内部的函数,但我不确定如何传递 datepicker 的值。这一切都需要在单击按钮时发生。这是我的日期选择器的代码:
<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);
当前开始日期设置为 datetime.today。我需要它从日期选择器中获取日期。让我知道是否需要任何进一步的信息。谢谢。
【问题讨论】:
你可以使用$.post('/DelayedSpiffDate/Dashboard', startDate: $('#datetimepicker1').val())
顺便说一下,您的输入有 2 个 id 属性。删除其中一个。
【参考方案1】:
在您的 javascript 中,添加此行以获取日期选择器文本框的值(顺便说一下,您的日期选择器上有两个 id 属性):
var startDate = $('#startDate').val();
然后将它与您的 $.get 调用一起传递,如下所示:
$.get('@Url.Action("DelayedSpiffDate", "Dashboard")', startDate: startDate );
【讨论】:
谢谢JB06,数据传递正常! 或者更短$.get('/DelayedSpiffDate/Dashboard', startDate: $('#startDate').val())
+1:)
@RezaAghaei 是的,不过我不会硬编码网址,如果你可以使用 Html 帮助器就不会。以上是关于通过 Javascript 将 DatePicker 值传递给 C# 控制器的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 通过JavaScript通过ID将HTML注入对象
如何使用已选择的值设置 jQuery datepicker 的默认日期
在 MVC 2 中将 css 类添加到 Html.EditorFor