应该获取或发布MVC方法以及如何在jquery中调用

时间:2012-06-28 03:53:42

标签: jquery asp.net-mvc

我在我的一个控制器上使用此方法获取下拉列表:

public JsonResult GetPeople(int roleId)
{
    return Json(_uow.GetPeople(roleId).Select(e => new SelectListItem { Text = e.Name, Value = e.Id.ToString() }).ToList());
}

所以基本上它会在特定角色中获得一大堆人并在json中返回一个selectlistitem列表。

我不确定它是否应该用[HttpGet]或[HttpPost]进行修饰。我认为它应该是一个获得,因为这实际上就是你在做什么,从服务器获取信息,即使你发布了一个id。

因此它没有装饰,所以默认情况下是GET。

这是我在jquery中调用它的方式:

$.get('/People/GetPeople', { roleId: $('#roleddl').val() }, function (data) {

    $(data).each(function () {
        $("<option value=" + this.Value + ">" + this.Text + "</option>").appendTo(peopleddl);
    });

});

所以我在这里使用$ .get。它没用。所以我认为它正在返回json,所以我尝试了$ .getJSON,但是没有用。所以我尝试了$ .post,它的工作原理如下:

$.post('/People/GetPeople', { roleId: $('#roleddl').val() }, function (data) {

    $(data).each(function () {
        $("<option value=" + this.Value + ">" + this.Text + "</option>").appendTo(peopleddl);
    });

});

所以我想知道为什么jquery post调用在它调用的方法不是POST时工作。

即使这样,我应该有什么组合。即。该方法应该用什么装饰,我应该用它来调用它?

1 个答案:

答案 0 :(得分:0)

您需要修改return语句以允许返回Json:

return Json(data, JsonRequestBehavior.AllowGet);

Json在通过GET响应返回时存在已知漏洞(此处更多:http://haacked.com/archive/2009/06/25/json-hijacking.aspx