首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript向控制器发送参数

问从Javascript向控制器发送参数
EN

Stack Overflow用户
提问于 2016-02-17 16:28:43
回答 2查看 104关注 0票数 0

我正在修改一个我以前没有做过的ASP.NET项目。我添加了一个datepicker对象:

代码语言:javascript
复制
<input id="datepicker" />
<script>
    $("#datepicker").kendoDatePicker({
        value: new Date()
        change: UpdateVehiculesSurSite
    });
</script>

并尝试修改"UpdateVehiculesEnAttente“方法,将选定的日期发送给我的控制器:

代码语言:javascript
复制
function UpdateVehiculesEnAttente(){
    var datepicker = $("#datepicker").data("kendoDatePicker");
    console.log(typeof datepicker);
    if (datepicker!==null && typeof datepicker !== "undefined"){
        var value = datepicker.value();
        console.log(value);
        value = kendo.toString(value,"dd/MM/yyyy")
        alert(value);

        $(document).ready($.ajax({
            url: 'Entrees_Sorties/Get_Vehicules_EnAttente',
            type: 'POST',
            data: {'date' : value},
            contentType: 'application/json',
            success: function (retour) {
                $("#DivVehiculesEnAttente").html(retour);
                console.log("update attente success");
            },
            error: function (xhr, status, error) {
                montrerNotificationNoConnexion();
            }
        }));
    //}
    return false;    
}

第一个问题是,项目首先运行javascript文件,因此数据报警器没有初始化。为了尝试我的Controller方法,我给了"value“一个日期。

我的控制器方法如下:

代码语言:javascript
复制
public ActionResult Get_Vehicules_EnAttente([DataSourceRequest] DataSourceRequest request, string date){
    try{
        List<List<Vehicule>> Data = new List<List<Vehicule>>();               
        DateTime dt = Convert.ToDateTime(date);
        Data.Add(Models.Vehicule.Get_Vehicules_EnAttente_ByDate(dt, true));
        return PartialView("VehiculesEnAttente", Data);               
    } catch (Exception e) {
        WorkflowWCF.Log.enregistrer_erreur(new Exception("Une erreur est survenue lors de la récupération des véhicules planifiés", e));
        return Json(new List<Vehicule>().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }
}

结果是我的Ajax请求返回错误并启动"montrerNotificationNoConnexion“方法。

知道为什么吗?

编辑:使用Firebug,我得到了这个

你认为问题是“日期”包含"17%2F02%2F2016“而不是"17/02/2016”吗?

EDIT2 :问题之一是字符串格式。我把它改成了"02/17/2016“,但仍然不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 10:37:24

您将内容类型定义为contentType: 'application/json',,然后将数据发送为简单文本。

您应该删除jquery,以便jquery使用默认的'application/x-www-form-urlencoded; charset=UTF-8'类型。

票数 0
EN

Stack Overflow用户

发布于 2016-02-18 10:23:00

您必须以ISO 8601格式发送日期,然后MVC模型绑定可以绑定它。

代码语言:javascript
复制
var GlobalJsHelpers = GlobalJsHelpers || {};
/// <summary>
/// Takes a utc js date and converts it to a iso8601 utc string
/// </summary>
GlobalJsHelpers.Iso8601FromUtc = function(utcDate) {
    //create a two digit month string (01-12)
    var month = ('0' + (utcDate.getUTCMonth() + 1)).substr(-2);
    //create a two digit day string (01-31)
    var day = ('0' + utcDate.getUTCDate()).substr(-2);
    return utcDate.getUTCFullYear() + '-' + month + '-' + day;
};

用法:

代码语言:javascript
复制
data: {'date' :  GlobalJsHelpers.Iso8601FromUtc(dateValueInUtc)}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35462370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档