【发布时间】:2014-05-24 05:06:21
【问题描述】:
我使用 Telerik 和 girdaction 属性为我的视图制作了一个网格。当我运行应用程序时,我无法访问视图并且我收到一条错误消息:
此请求已被阻止,因为在 GET 请求中使用敏感信息可能会泄露给第三方网站。要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。
我的控制器看起来像这样,其中 ActionResult "OrderDetailsReport" 应该将网格中的订单对象列表返回到视图:
public class GAStatisticsController : Controller
{
[GridAction(EnableCustomBinding = true)]
public ActionResult GetOrderDetails(GridCommand command, GAStatisticsListModel model)
{
DateTime? startDateValue = (model.StartDate == null) ? null
: (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.StartDate.Date, _dateTimeHelper.CurrentTimeZone);
DateTime? endDateValue = (model.EndDate == null) ? null
: (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.EndDate.Date, _dateTimeHelper.CurrentTimeZone).AddDays(1);
OrderStatus? orderStatus = model.OrderStatusId > 0 ? (OrderStatus?)(model.OrderStatusId) : null;
PaymentStatus? paymentStatus = model.PaymentStatusId > 0 ? (PaymentStatus?)(model.PaymentStatusId) : null;
ShippingStatus? shippingStatus = model.ShippingStatusId > 0 ? (ShippingStatus?)(model.ShippingStatusId) : null;
var orders = _orderService.SearchOrderStatistics(startDateValue, endDateValue, orderStatus,
paymentStatus, shippingStatus, model.CustomerEmail, model.OrderGuid);
var resultOrders = orders.Where(o => o.PaymentStatus == PaymentStatus.Paid)
.GroupBy(g => g.CreatedOnUtc.Date.ToString("yyyyMMdd"))
.Select(s => new GCOrdersModel(s.Key, s.Count(), s.Sum(x => x.OrderProductVariants.Count()))).ToList();
List<GCOrdersModel> TotalOrdersPaid = new List<GCOrdersModel>();
foreach (var r in resultOrders)
{
TotalOrdersPaid.Add(r);
}
var Orders = TotalOrdersPaid;
var OrderModel = new GridModel<GCOrdersModel>
{
Data = Orders,
Total = Orders.Count
};
return new JsonResult
{
Data = OrderModel
};
}
}
视图看起来像这样(网格应该根据用户使用 @Html.EditorFor dateTimePickers 选择的 StartDate 和 EndDate 来加载数据。单击提交时应该加载数据,但我什至无法访问查看所有atm):
@model GAStatisticsListModel
@using Nop.Admin.Models.GAStatistics;
@using Nop.Admin.Controllers;
@using Telerik.Web.Mvc.UI.Html;
@using System.Web.Mvc;
@using System.Linq;
@using Telerik.Web.Mvc.UI
@{
ViewBag.Title = "GetOrderDetails";
Layout = "~/Administration/Views/Shared/_AdminLayout.cshtml";
}
@using (Html.BeginForm(GCOrdersModel))
{
<h2>GetOrderDetails</h2>
<p>Hesan!</p>
<table class="adminContent">
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.StartDate):
</td>
<td class="adminData">
@Html.EditorFor(model => model.StartDate)
</td>
</tr>
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.EndDate):
</td>
<td class="adminData">
@Html.EditorFor(model => model.EndDate)
</td>
</tr>
<tr>
<td class="adminTitle">
@Html.NopLabelFor(model => model.GAStatisticsId ):
</td>
<td class="adminData">
@Html.DropDownList("GAStatisticsId", Model.AvailableGAStatistics)
<input type="button" id="GAStatisticsReport-Submit" class="t-button" value="@T("Admin.Common.Search")" />
</tr>
</table>
<table class="adminContent">
<tr>
<td>
@(Html.Telerik().Grid<GCOrdersModel>()
.Name("orderDetails-grid")
.Columns(columns =>
{
columns.Bound(x => x.Date);
columns.Bound(x => x.TotalOrders);
columns.Bound(x => x.TotalProducts)
}
)
.Groupable()
.Sortable()
.Pageable(settings => settings.PageSize(20).Position(GridPagerPosition.Both))
.DataBinding(dataBinding => dataBinding.Ajax().Select("GetOrderDetails", "GAStatistics"))
.ClientEvents(events => events.OnDataBinding("onDataBinding"))
)
</td>
</tr>
</table>
<script>
var first = true;
$(document).ready(function () {
if ($("select[name='GAStatisticsId'] option:selected").text() == "OrderStatistics")
onDataBinding()
$("#GAStatisticsReport-Submit").click(function () {
//search
var grid = $('#orderDetails-grid').data('tGrid');
grid.currentPage = 1; //new search. Set page size to 1
grid.ajaxRequest();
return false;
})
function onDataBinding(e) {
if (first) {
e.preventDefault();
first = false;
}
else {
var searchModel = {
StartDate: $('#@Html.FieldIdFor(model => model.StartDate)').val(),
EndDate: $('#@Html.FieldIdFor(model => model.EndDate)').val()
};
e.data = searchModel;
}
}
});
</script>
}
知道为什么我无法访问视图吗?我是否必须在代码中的某处放置“JsonRequestBehavior.AllowGet”?
【问题讨论】:
标签: jquery json grid telerik nopcommerce