2016-11-07 17 views
0

JSからMVC actionresultに値を渡す際に問題が発生しました。 以下は私がJqGridを実装するJSコードです。デバッグ中に、両方のパラメータの値がnullになります。私は値がnullとして渡される正しくbuを生成しているコンソールでrequestURLをチェックしました。MVC4でクエリ文字列の値を取得できません。アクション結果

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"); 
     } 

    } 
+0

コントローラに行のデフォルト値を指定していません。そして、あなたは 'requestURL'でrowsパラメータを渡していません –

+0

@FusRoDah私はまだExchangePlanIdとPlanYearにnullを返します。 – S7H

+0

'requestUrl'の最後のスラッシュ(/)を削除します。 – JB06

答えて

0

私は、クエリ文字列の値を取得することができませんでした理由です、私のするJsonResult上HttpPost属性を使用していました。

私は愚かです。 :/

正しい属性は[HttpGet]です。 Yay !!

関連する問題