使用条件运算符时我遇到了错误:
public ActionResult Topic()
{
var model = new TopicMasterViewModel();
// do something...
return model.Topic != null && model.Topic.Count > 0 ? PartialView("../Home/_Topic", model) : Json(new { });
}
错误说:
无法确定条件表达式的类型,因为' System.Web.Mvc.PartialViewResult' 和' System.Web之间没有隐式转换。 Mvc.JsonResult'
为什么呢? ActionResult
可以同时返回PartialView()
和Json()
答案 0 :(得分:2)
类型PartialViewResult
和JsonResult
不能隐式转换/存放,因此,在三元运算符中,两种情况的返回类型应匹配,在这种情况下不匹配。
你必须使用普通的if else:
if(model.Topic != null && model.Topic.Count > 0)
return PartialView("../Home/_Topic", model)
else
return Json(new { });
答案 1 :(得分:0)
对于三元运算符: 条件运算符的表达式具有特定类型。表达式中使用的两种类型必须是相同类型或可以相互隐式转换。
虽然在您的情况下,'System.Web.Mvc.PartialViewResult'
和'System.Web.Mvc.JsonResult'
并非隐含可转换。
您可以为案件使用正常的if
条件。