在Mvc中对控制器进行简单的Ajax调用
我是mvc的新手,我尝试对我的控制器进行简单的Ajax调用,以便在创建视图中使用日期和时间选择器。
当我在IE中使用调试时遇到此错误消息,但如果我执行断点,它看起来像我得到正确的数据。
参数字典为方法'System.Web.Mvc.ActionResult CreateEvent(System.String,System.String,System.String,Int32)'的非空类型'System.Int32'的参数'Lokal'包含一个空条目。 'VLVision.Controllers.SammantradesAdminController'。 可选参数必须是引用类型,可为空类型,或者声明为可选参数。
Parameternamn:参数
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
更改为lokal
,要么在C#中反过来(或将一个名称绑定到另一个名称)。
json中的参数名称与c#动作不同,这两个参数应该匹配。 改变其中之一:
或者将您的操作中的createLokal : lokal
更改为Lokal:lokal
或将您的操作更改参数名称更改为createLokal
谢谢,它一开始并不奏效。 但是当我调试它时,我发现lokal的结果是一个字符串,我将它改为一个字符串,然后将其转换回int。
现在我还有其他一些问题,但我想我可以修复其余的问题。
Sry为我蹩脚的英语,但我希望你明白我的意思。
谢谢!
链接地址: http://www.djcxy.com/p/6675.html上一篇: Making a Simple Ajax call to controller in Mvc
下一篇: jQuery Ajax Request is Giving Error on Mobile in Asp.net MVC 4