无法在MVC4 Action结果中获取查询字符串值

时间:2016-11-07 15:10:33

标签: javascript asp.net-mvc asp.net-mvc-4 jqgrid

我在将值从JS传递给MVC actionresult时遇到了麻烦。 下面是我想要填充JqGrid的JS代码。在调试期间,两个参数的值都为空。我在正确生成的控制台中检查了requestURL,将值传递为null。

HTML部分视图

<form>
                    <table>
                        <tr>
                            <td>
                                <input type="text" id="exchangePlanId" title="Exchange Plan Id", placeholder = "Exchange Plan Id" />
                            </td>
                            <td>
                                <input type="text" id="planYear" title="Plan Year" , placeholder="Plan Year" />
                            </td>
                            <td>
                                <input type="submit" id="getFilteredData" onclick="getFilteredProductData()"value="Filter" class="appButton" />
                            </td>
                        </tr>
                    </table>
                </form>

前端JS代码:

function getFilteredProductData() {
var exchangePlanId = document.getElementById('exchangePlanId').value;
var planYear = document.getElementById('planYear').value;
var requestURL = '/RxProductData/FilterRxProductData/?' + "exchangePlanId=" + exchangePlanId + "&planYear=" + planYear;
console.log(requestURL);
$(function () {
    $('#listGrid').jqGrid({
        url: requestURL,
        datatype: 'json',
        mtype: 'Get',
        colName: ['Id', 'ExchangePlanID', 'OracleFinanceMarketNbr', 'IssueStateCode', 'PlanID', 'PrimaryPlatformCode', 'PlanYear', 'VersionRefID'],
        colModel: [
            { key: true, hidden: true, name: 'Id', index: 'Id' },
            { key: false, name: 'ExchangePlanID', index: 'ExchangePlanID' },
            { key: false, name: 'OracleFinanceMarketNbr', index: 'OracleFinanceMarketNbr' },
            { key: false, name: 'IssueStateCode', index: 'IssueStateCode' },
            { key: false, name: 'PlanID', index: 'PlanID' },
            { key: false, name: 'PrimaryPlatformCode', index: 'PrimaryPlatformCode' },
            { key: false, name: 'PlanYear', index: 'PlanYear' },
            { key: false, name: 'VersionRefID', index: 'VersionRefID' }],
        pager: jQuery('#pager'),
        rowNum: 10,
        rowList: [10, 20, 30, 40],
        height: '100%',
        width: 'auto',
        viewrecords: true,
        caption: 'Rx Calc Product Data',
        emptyrecords: 'No records to display',
        jsonReader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            Id: "0"
        },
        autowidth: true,
        multiselect: false
    })
});

}

以下是后端的代码。

[HttpPost]
    public JsonResult FilterRxProductData(string exchangePlanId, string planYear,int rows, int page = 1, string transactionGUID = DefaultTransactionId)
    {
        Guid transactionGuid = base.CalculateGuid(transactionGUID);
        var rxProductDataList = crossRefBll.GetAllRxProductData(transactionGuid);
        if (rxProductDataList != null && rxProductDataList.Count > 0)
        {
            if (exchangePlanId != null && planYear == null)
            {

            }
            else if (exchangePlanId == null && planYear != null)
            {

            }
            else
            {

            }
            int totalRecords = rxProductDataList.Count;
            var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
            var jsonData = new
            {
                total = totalPages,
                page,
                records = totalRecords,
                rows = rxProductDataList
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }
        else
        {
            throw new Exception("No Rx Product Data was Returned : GetAllRxProductData");
        }

    }

1 个答案:

答案 0 :(得分:0)

我在我的jsonresult上使用了HttpPost属性,这就是为什么我无法获得查询字符串值的原因。

我很傻。 :/

使用的正确属性是[HttpGet] 耶!!