假设您有一个返回JsonResult
对象的控制器。
它可以返回结果A:
return Json(new { succeeded = false, message = "Message goes here." }, JsonRequestBehavior.AllowGet);
结果B:
return Json(new { succeeded = true, message = "Message goes here.", names = listOfNames }, JsonRequestBehavior.AllowGet);
或结果C:
return Json(new { succeeded = true, message = "Message goes here.", names = listOfNames, moreProps }, JsonRequestBehavior.AllowGet);
甚至返回结果D,E,F等......
让我们说我知道我得到了A型的回复。在我的ajax成功函数中,我没有智能感知,这是非常敏感的:
success: function (result) {
var var1NoIntellisence = result.succeeded;//No intellisense
var var2NoIntellisence = result.errorMessage;//No intellisense
我制作了这个javascript' class'。
function ResultA(r) {
this.succeeded = r.succeeded;
this.message = r.message;
}
现在,如果我这样做,我有智能感知:
success: function (result) {
var var1NoIntellisence = result.succeeded;//No intellisense
var var2NoIntellisence = result.message;//No intellisense
var resultObject = new Result(result);
var var1WithIntellisense = resultObject.succeeded;//Intellisense available!!
var var2WithIntellisense = resultObject.message;//Intellisense available!!
}
是否有一种方法/方法/库可以自动检测结果类型以使智能感知可用而不必明确地先将其强制转换? (不必投射也意味着不必有javascript返回类)我已经做了一些研究,但我恐怕答案是否定的......