我们可以将JsonRequestBehavior.AllowGet与[HttpPost]属性一起使用吗?

时间:2017-10-20 14:57:57

标签: c# ajax asp.net-mvc asp.net-mvc-4

因为有时我的系统会以GET类型点击,有时会点击POST类型。 如果我用JsonRequestBehavior.AllowGet属性修饰我的方法,那么返回Json结果时我会使用[HttpPost]吗?

例如:

        [HttpPost, ValidateAntiForgeryToken, Authorize]
        public ActionResult AssociatedDevices(long id, [DataSourceRequest] DataSourceRequest request)
        {
            var dataParameters = request.ToDataParameters();
            var deviceSetLogic = new DeviceSetLogic();
            var associatedDevices = deviceSetLogic.GetAssociatedDevicesByDeviceSetId(id, dataParameters);

            var result = new DataSourceResult()
            {
                Data = associatedDevices,
                Total = Convert.ToInt32(dataParameters.TotalRecordCount)
            };

            return Json(result, JsonRequestBehavior.AllowGet);
        }

如果我在PROD环境中像上面这样写,会引起任何问题吗?请指教。

1 个答案:

答案 0 :(得分:1)

JsonRequestBehavior.AllowGet参数添加到返回Json中是没有用的,因为您的方法使用[HttpPost]进行修饰,因此无法使用GET动词调用它。

你说有时候你的系统会“使用get命中,有时会使用post”,但如果你尝试使用GET请求调用此方法,则路由系统很可能获得404.

此方法无法回答GET请求,因此仅添加JsonRequestBehavior.AllowGet会使代码不太清晰。

如果您的操作必须使用POST和GET谓词进行操作,则应使用[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)][AcceptVerbs("Get", "Post")]

进行修饰