我是asp.net mvc的新手。
我需要创建像stackoverflow这样的'自动完成标记搜索'功能。我的目的是使用JsonResult创建一个控制器,以获取一个过滤的标签来自动完成输入文本元素。这是一个好习惯吗?如果是,我需要避免任何建议?
提前致谢。
PS:抱歉英语不好。
答案 0 :(得分:1)
如果你的意思是控制器动作然后是,那就是我这样做的。您可以添加一个新的控制器,但通常我只是在现有控制器中添加了一个方法,这样做是有意义的。
答案 1 :(得分:1)
我根本不知道绕过控制器的原因!他们确保您的呼叫遵循模式。我从来没有回到直接的php,asp或jsp页面,因为我已经开始使用MVC包,保持代码如此美观并根据顾虑分开。
答案 2 :(得分:1)
即使有多个过滤器参数,也可以使用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);
}