複数のフィルタパラメータがあっても結果セットが異なるタイプでない限り、複数のアクションを作成する必要がなくても、kekekelaによって提案されたソリューションを使用できます。例:
[HttpPost]
[Authorize]
public JsonResult FilterTasks(int maxResults, string users = "", string tags = "", string categories = "")
{
List<int> userIdList = MyHelper.GetIntList(users);
List<string> tagNameList = MyHelper.GetStringList(tags);
List<string> categoryIdList = MyHelper.GetStringList(categories);
var tasks = from task in projectsEntities.Tasks select task;
if (userIdList.Count > 0)
tasks = tasks.Where(task => userIdList.Contains(task.UserId));
if (tagNameList.Count > 0)
tasks = tasks.Where(task => tagNameList.Contains(task.TagName));
if (categoryIdList.Count > 0)
tasks = tasks.Where(task => categoryIdList.Contains(task.CategoryId));
var topTasks = tasks.Take(maxResults).ToArray();
return Json(topTasks);
}
ありがとうございます!私は多くのフィルタが必要な場合?私のすべてのフィルタのためのコントローラを作成することをお勧めしますか?例:/ filter/tags /、/ filter/users、/ filter/categoriesなど – wallybh