如果mvc模型视图控制器有参数,$ .post()不起作用

时间:2013-01-29 15:35:36

标签: asp.net-mvc json jquery

我是MVC新手。我正在使用MVC4。 我遇到了回调问题。如果我在post()之前和之后发出警报,则两个警报都显示但是呼叫不会触发。

[HttpGet]
[Authorize]
public ActionResult Dashboard(int Menu)
{
 //some code
 return View("Dashboard");
}

<script>
    $(document).ready(function () {
        $.post("../Client/GetFact", {},
        function (data) {  
          //some code
        });
    });
</script> 

[HttpPost]
[Authorize]
public JsonResult GetFact()
{
    //some code to fill object_data

    var data = object_data;

    return Json(data);
}

只要我在没有参数的情况下离开ActionResult Dashboard就行了。如果我向Dashboard(int Menu)添加一个参数,那么回调GetFact的方法就不起作用了。 我搜索并发现了一个类似的帖子,并按照你们给出的说明进行操作,但仍然无效(看看:如果mvc模型视图控制器有参数,则getJSON无效)。 我不知道我做错了什么。你能帮我吗?感谢的!

2 个答案:

答案 0 :(得分:0)

这是一个简写的Ajax函数,相当于:

$.ajax({  type: "POST",
           url: url,  
          data: data,
       success: success,// -> call alert here  
      dataType: dataType}); 

答案 1 :(得分:0)

我使用$ .get执行类似操作,使用带有@ Url.Action的jquery而不是url。

除了使用FormContext传递给我的Action:

放在@using(Html.BeginForm())

之前
@{ ViewContext.FormContext = new FormContext(); }

示例:

$.get('@Url.Action("ActionName", "ControllerName")', { IDName: $('#IdName').val() }, function (data) {
                    //Do Something here with the data
                });

我会想象表格帖子是

$.post('@Url.Ation("ActionName", "ControllerName")', function (data) {
                     //Do Something here with the data
              });