[英]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.