我正在尝试将数据发布到控制器中,但它似乎不起作用,我需要帖子在完成后将视图内容包含到div中但我无法实现它
这是我的js函数:
SELECT *
FROM schedules
INNER JOIN
(
SELECT person_id, SUBSTRING_INDEX(GROUP_CONCAT(schedule_id ORDER BY DATEDIFF(end_date, start_date)), ',', 1) AS best_schedule_id
FROM schedules
WHERE person_id = 1
AND start_date <= CURDATE() AND end_date >= CURDATE
GROUP BY person_id
) sub0
ON schedules.schedule_id = sub0.best_schedule_id
AND schedules.person_id = sub0.person_id
而且,这是我的控制器:
function show(num) {
$.ajax({
dataType: "html",
type: "POST",
url: "Student/Schedule",
data: { number: num },
success: function (a) {
// Replace the div's content with the page method's return.
alert("success");
$('#schedule').load(a);
}
});
}
我是MVC和C#的菜鸟,所以欢迎任何帮助。
答案 0 :(得分:2)
有些事情你应该解决这个问题。
将网址更改为"/Student/Schedule"
您使用"Student/Schedule"
作为网址,因此您尝试调用名为“学生”的操作。
将[HttpPost]
添加到您的操作中。
您应该return PartialView("Schedule", number);
。
当您使用return View(number)
时,它使用数字的字符串值作为您的视图名称。您应该明确传递视图名称和模型。
$('#schedule').html(a);
最好在ajax调用中添加一个错误函数,以便能够找到错误:
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
//or you can put jqXHR.responseText somewhere as complete response. Its html.
}
答案 1 :(得分:1)
您的操作应该返回部分视图,而不是视图。
将您的操作更改为:
[HttpPost]
// by the way use string instead of String
public ActionResult Schedule(string number)
{
return PartialView("_Schedule", number);
}
然后,您需要创建名为_Schedule.cshtml
的部分视图。
另外,您需要将$('#schedule').load(a);
更改为$('#schedule').html(a);
而且,我建议您使用Url.Action
在您的ajax调用中设置您的网址,如下所示:
function show(num) {
$.ajax({
dataType: "html",
type: "POST",
url: '@Url.Action("Schedule", "Student")',
data: { number: num },
success: function (a) {
// Replace the div's content with the page method's return.
alert("success");
$('#schedule').html(a);
}
});
}
答案 2 :(得分:1)
我有同样的问题,我所做的是将jquery.unobtrusive-ajax.js添加到我的脚本