' PartialViewResult'之间没有隐式转换。和JasonResult'

时间:2015-08-31 09:13:56

标签: c# asp.net-mvc-5

使用条件运算符时我遇到了错误:

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()

2 个答案:

答案 0 :(得分:2)

类型PartialViewResultJsonResult不能隐式转换/存放,因此,在三元运算符中,两种情况的返回类型应匹配,在这种情况下不匹配。

你必须使用普通的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条件。