Какова лучшая стратегия маршрутизации URL для поддержки многопольной фильтрации в asp.net mvc - PullRequest
1 голос
/ 06 июля 2010

У меня есть страница mvc asp.net, где я показываю набор данных в отчете. У меня есть раздел фильтра вверху, и каждый фильтр меняет набор данных с:

 Controller/Action

примерно так:

Controller/Action/Field1Filter

Если фильтр не выбран, я помещаю ноль в этой части URL. Я продолжаю добавлять дополнительные поля для фильтрации, и теперь я получаю URL этого типа.

Controller/Action/Field1Filter/Field2Filter/Field3Filter/Field4Filter/Field5Filter/Field6Filter . . . .

, поэтому я получаю URL-адреса вроде этого:

Controller/Action/0/0/1/0/5/0

Есть ли в любом случае сделать это как:

  1. Я собираюсь добавить еще несколько полей для фильтрации по
  2. Я хочу поддержать множественный выбор для некоторых из этих полей, поэтому я не вижу, как я могу поддержать это в текущей модели

1 Ответ

1 голос
/ 06 июля 2010

Пример из моей заявки:

[HttpGet]
public ActionResult TaskSearch(TaskSearchCriteria criteria)
{
    //Do something with criteria
}

public class TaskSearchCriteria
{
    public List<int> Statuses { get; set; } //List of ids

    public DateTime? CreationDateFrom { get; set; }
    public DateTime? CreationDateTo { get; set; }

    public bool SearchInTitle { get; set; }
}

Часть формы:

<form method="GET" action="/Task/TaskSearch" name="searchform">
    <select id="Search_Statuses" multiple="multiple" name="Statuses">
        <option value="-1">*All</option>
        <option value="-8">*Opened</option>
        <option value="-4">*Active</option>
        <option value="-3">*Closing</option>
        <option value="-2">*Beginning</option>
        <option value="21">Closed</option>
        <option value="19">Created</option>
        <option value="20">In progress</option>
        <option value="22">Requires testing</option>
    </select>

Пример строки запроса:

SearchInTitle=true&SearchInTitle=false&Statuses=19&Statuses=20&Statuses=22&CreationDateFrom=2010.07.01

Если вы пропустите одно поле много раз, оно будет переведено в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...