c# – 在Mvc中对控制器进行简单的Ajax调用

我是mvc的新手,我尝试对我的控制器进行简单的Ajax调用,因此我可以在创建视图中使用日期和时间选择器.

当我在IE中使用调试时,我收到此错误消息,但如果我执行断点,看起来我得到了正确的数据.

The parameters dictionary contains a null entry for parameter ‘Lokal’ of non-nullable type ‘system.int32’ for method
‘System.Web.Mvc.ActionResult CreateEvent(System.String, System.String,
System.String, Int32)’ in
‘VLVision.Controllers.SammanTradesAdminController’. An optional
parameter must be a reference type, a nullable type, or be declared as
an optional parameter.
Parameternamn: parameters

HTML
    
                
    

script type="text/javascript">

        function createSammanTrade() {
        var sammanTrade = document.getElementById('sammanTrade').value;
        var date = document.getElementById('datepicker').value;
        var startTime = date + ' ' + document.getElementById('StartTimepicker').value;
        var endTime = date + ' ' + document.getElementById('EndTimepicker').value;
        var lokal = document.getElementById('lokal').value;

        $.ajax({
            url: "@Url.Action("CreateEvent", "SammanTradesAdmin")",
            data: { createSammanTrade: sammanTrade, createStartTime: startTime, createEndTime: endTime, createLokal: lokal },
            type: "POST",
            error: function () {
                alert("An error occurred.");
            },
            success: function (data) {

                $("#clanderDiv").html(data);
                $("#setEventResponse").html("Händelse sparad");
            //    $(".blank").tooltip();
            }
        });
    }

调节器

public ActionResult Create()
{
       ViewBag.lID = new SelectList(db.Lokal, "lID", "lLokal");
       return View();
}

[HttpPost]
public ActionResult CreateEvent(string createSammanTrade, string createStartTime, string createEndTime, int Lokal)
        {
            SammanTrade sammanTrade = new SammanTrade();
            sammanTrade.sSammanTrade = createSammanTrade;
            sammanTrade.sstartTid = Convert.ToDateTime(createStartTime);
            sammanTrade.sSlutTid = Convert.ToDateTime(createEndTime);
            sammanTrade.lID = Lokal;


            if (ModelState.IsValid)
            {
                db.SammanTrade.Add(sammanTrade);
                db.SaveChanges();
                return RedirectToAction("Index");

            }
                ViewBag.lID = new SelectList(db.Lokal, "lID", "lLokal", sammanTrade.lID);
                return View(sammanTrade);

}

解决方法:

由于JS和C#中的参数名称不同,因此无法绑定:

data: { createSammanTrade: sammanTrade, createStartTime: startTime, createEndTime: endTime, createLokal: lokal }

public ActionResult CreateEvent(string createSammanTrade, string createStartTime, string createEndTime, int Lokal)

在JS中将createLokal更改为lokal,或者在C#中将其更改为(或将一个名称绑定到另一个名称).

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...