这是我的代码:
[HttpGet]
public ActionResult GetCategor(int catId)
{
using (uuEntities ems = new uuEntities())
{
return Json(ems.SupportSubCats.Where(x => x.CatID == catId).Select(
x => new
{
SubId = x.SubCatID,
SUbName = x.SubCatName
}).ToList(), JsonRequestBehavior.AllowGet);
}
}
我尝试过的:
在控制器中:
[HttpGet]
public ActionResult GetCategor(int catId)
{
return Json(_service.List(int catId), JsonRequestBehavior.AllowGet);
}
}
在服务中:
public void List(int catId)
{
return new GenericRepository<SupportSubCategory>(_factory.ContextFactory)
.Get(filter: (x => x.CatID == catId))
.Select(x => new
{
SubId = x.SubCatID,
SUbName = x.SubCatName
}).ToList();
}
我认为我的退货类型不正确请告诉我解决方案。在公共空白附近,我收到一个错误,无效无法返回列表。
void
方法不会向其调用者返回任何值。你可以在return
方法中使用空的void
只退出方法 - 但是你不能返回任何值。
此代码完全有效,并广泛用作常见做法:
public void DoSomething()
{
if(<someCondition>)
{
return;
}
// The rest of the code will only be executed if <someCondition> evalualtes to false
}
通常,在将参数传递给方法时需要使用此模式,并且需要在实际执行方法的其余部分之前对其进行验证。
但是,此代码无效且无法编译:
public void DoSomething()
{
if(<someCondition>)
{
return false; // Here is your compiler error...
}
// The rest of the code will only be executed if <someCondition> evalualtes to false
}
在评论中我们的对话之后,您应该创建一个类来保存Select
的结果而不是使用匿名类型,并从您的方法返回该类的列表:
// Note: I've renamed your method to something a little bit more meaningful
public List<SubDetails> ListSubDetails(int catId)
{
return new GenericRepository<SupportSubCategory>(_factory.ContextFactory)
.Get(filter: (x => x.CatID == catId))
.Select(x => new SubDetails()
{
SubId = x.SubCatID,
SUbName = x.SubCatName
}).ToList();
}
...
public class SubDetails
{
public Int SubId {get; set;} // I'm guessing int here...
public string SUbName {get; set;} // I'm guessing string here...
}