我是asp.net mvc的新手。好的做法是爲自動完成過濾器創建控制器嗎?
我需要創建一個「自動完成標籤搜索」功能,如stackoverflow。我的意圖是創建一個帶有JsonResult的控制器來獲取過濾標籤以自動完成輸入文本元素。這是一個很好的做法?如果是的話,我需要避免的任何建議?
在此先感謝。
PS .:對不起,英語不好。
我是asp.net mvc的新手。好的做法是爲自動完成過濾器創建控制器嗎?
我需要創建一個「自動完成標籤搜索」功能,如stackoverflow。我的意圖是創建一個帶有JsonResult的控制器來獲取過濾標籤以自動完成輸入文本元素。這是一個很好的做法?如果是的話,我需要避免的任何建議?
在此先感謝。
PS .:對不起,英語不好。
即使有多個過濾器參數,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);
}
如果你的意思是一個控制器動作,那麼是的,這是我如何做到的。您可以添加一個新的控制器,但通常我只是在現有的控制器中添加了一個方法,這樣做有意義。
我不知道有什麼理由繞過控制器!他們確保您的呼叫遵循一種模式。自從我開始使用MVC軟件包以來,我從來沒有回到直接的php,asp或jsp頁面,並保持代碼如此之好,並根據問題分離。
好!感謝你的回答! – wallybh 2011-01-07 00:46:00
感謝您的回答!如果我需要很多過濾器?爲我的所有過濾器創建一個控制器是一個很好的實踐嗎?例如:/ filter/tags /,/ filter/users,/ filter/categories等。 – wallybh 2011-01-07 00:45:10