2011-01-07 49 views
0

我是asp.net mvc的新手。好的做法是爲自動完成過濾器創建控制器嗎?

我需要創建一個「自動完成標籤搜索」功能,如stackoverflow。我的意圖是創建一個帶有JsonResult的控制器來獲取過濾標籤以自動完成輸入文本元素。這是一個很好的做法?如果是的話,我需要避免的任何建議?

在此先感謝。

PS .:對不起,英語不好。

回答

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); 
    } 
1

如果你的意思是一個控制器動作,那麼是的,這是我如何做到的。您可以添加一個新的控制器,但通常我只是在現有的控制器中添加了一個方法,這樣做有意義。

+0

感謝您的回答!如果我需要很多過濾器?爲我的所有過濾器創建一個控制器是一個很好的實踐嗎?例如:/ filter/tags /,/ filter/users,/ filter/categories等。 – wallybh 2011-01-07 00:45:10

1

我不知道有什麼理由繞過控制器!他們確保您的呼叫遵循一種模式。自從我開始使用MVC軟件包以來,我從來沒有回到直接的php,asp或jsp頁面,並保持代碼如此之好,並根據問題分離。

+0

好!感謝你的回答! – wallybh 2011-01-07 00:46:00

相關問題