[英]Cannot implicitly convert type 'System.Web.Mvc.RedirectToRouteResult' to 'System.Web.Mvc.JsonResult'
[英]Cannot implicitly Convert type System.web.mvc.JsonResult to System.Generic.IEnumerable
在我的Controller中,我有Action,我想要/嘗試返回Json,但是我不確定為什么會收到此錯誤,我錯過了什么嗎? 誰能指出我的正確方向! 提前致謝 :)
RMAHistorik(LikeOrderNummer,發件人,金額,SearchRMA,跳過)。
System.Web.Mvc.JsonResult'不包含'Select'的定義,找不到擴展方法'Select'接受類型為'System.Web.Mvc.JsonResult'的第一個參數(是否缺少using指令或組裝參考?)
控制器:
public ActionResult RMAHistory()
{
return View(RMAHistorik("", 0, 10, true, 0));
}
[HttpGet]
public JsonResult RMAHistorik(string LikeOrderNummer, int From, int Amount, bool SearchRMA, int skip)
{
RMAHistory rma = new RMAHistory();
string EmailID = Session["Email"].ToString();
var query = db.RMAStatus.Join(db.RMA_History, u => u.ID, y => y.StatusID, (u, y) => new { u, y }).Where(a => a.y.Email == EmailID && LikeOrderNummer == "" ? true : a.y.Ordrenummer.StartsWith(LikeOrderNummer.Trim()) || a.y.Fakturnummer.StartsWith(LikeOrderNummer.Trim())).Distinct().Select(t => new RMAHistory
{
Status = t.u.Status,
RMASendDato = t.y.RMASendDato,
}).OrderByDescending(t => t.OrdreDato).Skip(skip).Take(Amount).ToList();
return Json(query,JsonRequestBehavior.AllowGet); //Error here
}
///////////////////////////////更新
public string JsonRMAHistory(string LikeOrderNummer, int From, int Amount, bool SearchRMA, bool Searching, int skip)
{
if (Searching)
{
skip = 0;
}
string EmailID = Session["Email"].ToString();
return Newtonsoft.Json.JsonConvert.SerializeObject(RMAHistorik(LikeOrderNummer, From, Amount, SearchRMA, skip).Select(t => new
{
RMASendDato = t.RMASendDato.ToString("dd/MM/yyy"),
OrdreDato = t.OrdreDato.ToString("dd/MM/yyy"),
Varenummer = t.Varenummer,
Referencenummer = t.Referencenummer,
AntalRMA = t.AntalRMA,
Fakturnummer = t.Fakturnummer,
Ordrenummer = t.Ordrenummer,
Status = t.Status,
Email = EmailID
}).Where(l => l.Email == EmailID).Distinct());
}
您不能在jsonResult上調用Select()方法。 您可以像下面這樣。 讓我知道這是否有幫助!
public ActionResult RMAHistory()
{
return View(RMAHistorik("", 0, 10, true, 0));
}
[HttpGet]
public JsonResult RMAHistorik(string LikeOrderNummer, int From, int Amount, bool SearchRMA, int skip)
{
var query = GetData(LikeOrderNummer, Amount, skip).ToList();
return Json(query,JsonRequestBehavior.AllowGet);
}
public string JsonRMAHistory(string LikeOrderNummer, int From, int Amount, bool SearchRMA, bool Searching, int skip)
{
if (Searching)
{
skip = 0;
}
string EmailID = Session["Email"].ToString();
return Newtonsoft.Json.JsonConvert.SerializeObject(GetData(LikeOrderNummer, Amount, skip).Select(t => new
{
RMASendDato = t.RMASendDato.ToString("dd/MM/yyy"),
OrdreDato = t.OrdreDato.ToString("dd/MM/yyy"),
Varenummer = t.Varenummer,
Referencenummer = t.Referencenummer,
AntalRMA = t.AntalRMA,
Fakturnummer = t.Fakturnummer,
Ordrenummer = t.Ordrenummer,
Status = t.Status,
Email = EmailID
}).Where(l => l.Email == EmailID).Distinct());
}
private IEnumerable<RMAHistory> GetData(string LikeOrderNummer, int Amount, int skip)
{
RMAHistory rma = new RMAHistory();
string EmailID = Convert.ToString(HttpContext.Current.Session["Email"]);
return db.RMAStatus.Join(db.RMA_History, u => u.ID, y => y.StatusID, (u, y) => new { u, y }).Where(a => a.y.Email == EmailID && LikeOrderNummer == "" ? true : a.y.Ordrenummer.StartsWith(LikeOrderNummer.Trim()) || a.y.Fakturnummer.StartsWith(LikeOrderNummer.Trim())).Distinct().Select(t => new RMAHistory
{
Status = t.u.Status,
RMASendDato = t.y.RMASendDato,
}).OrderByDescending(t => t.OrdreDato).Skip(skip).Take(Amount).ToList();
}
將數據轉換為JSON,然后立即將其立即再次轉換回去,這沒有任何意義-效率不高,也無法幫助您解決問題。
相反,請創建一個單獨的方法,該方法公開您要在這兩種操作方法之間共享的查詢功能,並且可以重復使用。 這從返回給用戶的格式中提取了查詢的執行和結果集的創建。
public ActionResult RMAHistory()
{
return View(getRMAHistory("", 0, 10, 0));
}
[HttpGet]
public JsonResult RMAHistorik(string LikeOrderNummer, int From, int Amount, int skip)
{
List<RMAHistory> results = getRMAHistory(LikeOrderNummer, From, Amount, skip);
return Json(results, JsonRequestBehavior.AllowGet);
}
//private method to allow RMAHistory query to be re-used in both action methods
private List<RMAHistory> getRMAHistory(string LikeOrderNummer, int From, int Amount, int skip)
{
string EmailID = Session["Email"].ToString();
List<RMAHistory> query = db.RMAStatus
.Join(db.RMA_History, u => u.ID, y => y.StatusID, (u, y) => new { u, y })
.Where(a => a.y.Email == EmailID && LikeOrderNummer == "" ? true : a.y.Ordrenummer.StartsWith(LikeOrderNummer.Trim()) || a.y.Fakturnummer.StartsWith(LikeOrderNummer.Trim()))
.Distinct()
.Select(t => new RMAHistory
{
Status = t.u.Status,
RMASendDato = t.y.RMASendDato,
})
.OrderByDescending(t => t.OrdreDato)
.Skip(skip)
.Take(Amount)
.ToList();
return query;
}
PS我已經假定RMAHistory
視圖的model
是List<RMAHistory>
或IEnumerable<RMAHistory>
,並且它不期望使用某些JSON字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.