簡體   English   中英

MVC4 EF5 - Linq SqlQuery() 之后的 Ajax 調用錯誤

[英]MVC4 EF5 - Ajax call error after Linq SqlQuery()

我的觀點看起來像

<form onsubmit="return Filter();" class="my-form">
  <input type="submit" value="Filter!" />
</form>

使用以下 ajax 調用

    $.ajax({
        url: "/Report/Filter/",
        cache: false,
        type: "POST",
        dataType: "html"
        data: { filterOption: selectedFilterOption, filterOptionValue: selectedFilterValue },
        success: function (data) {
            $('#filterResultDiv').html(data);
        },
        error: function (reponse) {
            alert("error : " + reponse);
        }
    });

調用此控制器方法

        [HttpPost]
        public ActionResult Filter(string filterOption, string filterOptionValue)
        {
            var filterCol = (FilterColumnName)System.Enum.Parse(typeof(FilterColumnName), filterOption);
            var singleFilter = new SingleFilter(filterCol, filterOptionValue);
            var entries = singleFilter.Filter();
            ...
            return PartialView("\\Places\\PartialReport", reportVM);
        }

並且在調試此方法時發生錯誤

 public List<FilteredRow> Filter()
        {
            List<FilteredRow> result = new List<FilteredRow>();
            var ent = new Entities();

            var query = "SELECT * FROM V_Data WHERE " + this.GetFilterColumnName() + "= @p0";
            var dbObjects = ent.V_Data.SqlQuery(query, this.Value).ToList(); //<---- the ajax error function gets called after this line :(

            foreach (var obj in dbObjects)
            {
                var entry = new FilteredRow(obj);
                result.Add(entry);
            }

            return result;
        }

所以在var dbObjects = ent.V_Data.SqlQuery(query, this.Value).ToList(); 警報函數被調用並顯示“錯誤:[對象對象]”...但 Filter() 方法也將正確數量的過濾實體返回給我的控制器方法。 部分視圖很快就會顯示出來,然后頁面會重新加載。 我錯過了什么?

此查詢適用於所有數據類型:

var valueParam = new SqlParameter("@p0", this.Value);
var dbObjects = ent.V_Data.SqlQuery("SELECT * FROM V_Data WHERE " + this.GetFilterColumnName() + " = @p0", valueParam);

在 javascript 中我必須使用

function Filter() {
      $.ajax({
                url: '@Url.Action("Filter")',
                cache: false,
                type: "GET",
                data: { filterOption: selectedFilterOption, filterOptionValue: selectedFilterValue },
                success: function (data) {
                    $('#filterResultDiv').html(data);                
                },
                error: function (reponse) {
                    alert("error : " + reponse.toString());
                }
            });
            return false; //<- this avoids the page refresh!
          }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM