Хорошая практика - создать контроллер для фильтров автозаполнения? - PullRequest
0 голосов
/ 07 января 2011

Я новичок в asp.net mvc.

Мне нужно создать функцию «автозаполнения поиска тегов», такую ​​как stackoverflow. Мое намерение состоит в том, чтобы создать контроллер с JsonResult, чтобы получить отфильтрованный тег для автоматического заполнения элемента input-text. Это хорошая практика? Если да, то каких рекомендаций мне следует избегать?

Заранее спасибо.

PS: извините за плохой английский.

Ответы [ 3 ]

1 голос
/ 07 января 2011

Я вообще не знаю причины обхода контроллеров! Они гарантируют, что ваши звонки следуют шаблону. Я никогда не возвращался к прямым страницам php, asp или jsp с тех пор, как начал использовать пакеты MVC, так что код остается таким красивым и разделенным в зависимости от проблем.

1 голос
/ 18 января 2011

Решение, предложенное 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 голос
/ 07 января 2011

Если вы имеете в виду действие контроллера, то да, вот как я это сделал. Вы можете добавить новый контроллер, но обычно я только что добавил метод к существующему контроллеру, где это имеет смысл.

...