我在我的一个控制器上有这个方法来获取下拉列表:
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);
});
});
所以我想知道为什么当它调用的方法不是 POST 时,jquery post 调用会起作用。
即使这有效,我应该有什么组合。IE。该方法应该用什么装饰,我应该用什么来调用它?