Asp.net mvc 获取使用参数返回特定可查询项的ActionResult时出现问题
我试图使用给定的参数(年份、Qtr、Div)获取此操作结果,并仅返回这些结果。我在其他ActionResults中使用类似的东西,但它们不会以Json返回结果。我不太确定我需要做什么才能得到这个结果,只返回与给定参数匹配的结果。它所做的是返回所有记录,而不是按参数过滤它们Asp.net mvc 获取使用参数返回特定可查询项的ActionResult时出现问题,asp.net-mvc,telerik-mvc,Asp.net Mvc,Telerik Mvc,我试图使用给定的参数(年份、Qtr、Div)获取此操作结果,并仅返回这些结果。我在其他ActionResults中使用类似的东西,但它们不会以Json返回结果。我不太确定我需要做什么才能得到这个结果,只返回与给定参数匹配的结果。它所做的是返回所有记录,而不是按参数过滤它们 public ActionResult GLAcctsISDs_Read([DataSourceRequest] DataSourceRequest request, int? Year, int? Qtr, str
public ActionResult GLAcctsISDs_Read([DataSourceRequest] DataSourceRequest request, int? Year, int? Qtr, string Div)
{
var glacctsisds = db.GLAcctsISDs.AsQueryable();
if (Year.HasValue)
glacctsisds = glacctsisds.Where(x => x.Year == Year);
if (Qtr.HasValue)
glacctsisds = glacctsisds.Where(x => x.Qtr == Qtr);
if (!string.IsNullOrEmpty(Div))
glacctsisds = glacctsisds.Where(x => x.Div == Div);
DataSourceResult result = glacctsisds.ToDataSourceResult(request, gLAcctsISD => new {
ID = gLAcctsISD.ID,
Div = gLAcctsISD.Div,
Year = gLAcctsISD.Year,
Qtr = gLAcctsISD.Qtr,
GLAcct = gLAcctsISD.GLAcct,
GLDescr = gLAcctsISD.GLDescr,
TBDebit = gLAcctsISD.TBDebit,
TBCredit = gLAcctsISD.TBCredit,
IncExpAdjDebit = gLAcctsISD.IncExpAdjDebit,
IncExpAdjCredit = gLAcctsISD.IncExpAdjCredit,
AdlTrialDebit = gLAcctsISD.AdlTrialDebit,
AdjTrialCredit = gLAcctsISD.AdjTrialCredit,
RemainExpDebit = gLAcctsISD.RemainExpDebit,
PendingIncomeCredit = gLAcctsISD.PendingIncomeCredit,
ProjRemainExpDebit = gLAcctsISD.ProjRemainExpDebit,
NetIncomeCredit = gLAcctsISD.NetIncomeCredit,
DivGLNotes = gLAcctsISD.DivGLNotes
});
return Json(result);
}
提前感谢您的帮助。尝试将“result”对象序列化为json
string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(result);
return Json(jsonString);
对于任何想知道如何做到这一点的人,请点击这里: 参数作为年份、qtr和div传递给控制器:
public ActionResult KenodGLAcctISDList( int? year, int? qtr, string div)
{
ViewBag.YYear = year;
ViewBag.QQtr = qtr;
ViewBag.DDiv = div;
return View();
}
public ActionResult GLAcctsISDs_Read([DataSourceRequest]DataSourceRequest request)
{
var glacctsisds = db.GLAcctsISDs.AsQueryable();
DataSourceResult result = glacctsisds.ToDataSourceResult(request, gLAcctsISD => new {
ID = gLAcctsISD.ID,
Div = gLAcctsISD.Div,
Year = gLAcctsISD.Year,
Qtr = gLAcctsISD.Qtr,
GLAcct = gLAcctsISD.GLAcct,
GLDescr = gLAcctsISD.GLDescr,
TBDebit = gLAcctsISD.TBDebit,
TBCredit = gLAcctsISD.TBCredit,
IncExpAdjDebit = gLAcctsISD.IncExpAdjDebit,
IncExpAdjCredit = gLAcctsISD.IncExpAdjCredit,
AdlTrialDebit = gLAcctsISD.AdlTrialDebit,
AdjTrialCredit = gLAcctsISD.AdjTrialCredit,
RemainExpDebit = gLAcctsISD.RemainExpDebit,
PendingIncomeCredit = gLAcctsISD.PendingIncomeCredit,
ProjRemainExpDebit = gLAcctsISD.ProjRemainExpDebit,
NetIncomeCredit = gLAcctsISD.NetIncomeCredit,
DivGLNotes = gLAcctsISD.DivGLNotes
});
return Json(result);
}
然后作为Viewbags传递到视图,并按KendoUI网格代码进行排序
.Read(read => read.Action("GLAcctsISDs_Read", "KendoGLAcctISD"))
.Filter(filter =>
{
filter.Add(f => f.Year).IsEqualTo(ViewBag.YYear);
filter.Add(f => f.Qtr).IsEqualTo(ViewBag.QQtr);
})
.Update(update => update.Action("GLAcctsISDs_Update", "KendoGLAcctISD"))
放置一个断点,查看是否为
年份
、Qtr
和Div
参数获取不可为空的值。是的,出于某种原因,我获取的值为空。我的语法不在我列出参数的顶部。地址链接显示他们通过了……我知道了。Telerik的MVC用户界面与普通的MVC代码完全不同。是的,这不会,因为你必须首先检查为什么会得到空值。