【问题标题】:Cannot access view - json无法访问视图 - json
【发布时间】: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


    【解决方案1】:

    您当前返回的是JsonResult。要返回 ViewResult,请使用类似

    return View(model);
    

    return View("ViewName", model);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多