如何在mvc4 asp.net中的控制器动作中获取ajax发布值

时间:2013-05-03 12:33:26

标签: asp.net-mvc

我在mvc4中构建事件日历,我使用JQuery在JavaScript中构建了简单的日历。我可以点击相应的日期来获取日期。我想在控制器的一个动作中获取此日期,以便我可以使用此日期保存在数据库中。

HomeController:index.cshtml

function getDate() {

                $('.cal_daybox').on('click', function () {
                    var timestamp = parseInt($(this).attr('id'));
                    var day = new Date(timestamp);
                    alert("You clicked " + day.toDateString());

                    var url = '@Url.Content("~/Events/Index")';
                   // window.location = url;

                    var date =day.toDateString();


                    $.ajax({
                        type: "POST",
                        url: url,
                        data: date,
                        dataType:"json"
                    });
                    return false;
                });
                }

现在我可以在调试器中获取此日期,但我想在其他视图中显示此日期。你能否告诉我如何将这个日期值传递给控制器​​,因为下面的代码不起作用?

Eventscontroller.cs

[HttpPost]

    public ActionResult Index(string date)
    {

        if (Request.IsAjaxRequest())
        {
            return Json(date, JsonRequestBehavior.AllowGet);
        }

        return RedirectToAction("Index");
    }

1 个答案:

答案 0 :(得分:2)

您可能需要@Url.Action("actionName", "controllerName")而不是@Url.Content()@Url.Content用于访问文件而不是控制器操作。或者,如果您为该操作定义了路由,则可以使用@Url.RouteUrl

此外,您可能希望更改data以使用data: { date: day.toDateString() }来匹配操作的参数。