Значение по умолчанию переопределяется в значениях - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть действие, которое принимает несколько значений для фильтрации. Эти значения не являются обязательными. Я устанавливаю значения по умолчанию. Значения по умолчанию переопределяют значения, которые я передаю.

Если я пройду: minAge: 40, maxAge: 40. Оба значения установлены на 0.

Это действие на моем контроллере:

    [HttpGet]
    public ActionResult DataTableUpdate(string firstName = "", string lastName = "", int minAge = 0, int maxAge = 0, string currentState = "")
    {
        List<DataMember> data = DataMemberCache.GetMembers().FindAll(d => (d.FirstName.Contains(firstName)) && (d.LastName.Contains(lastName)) && (d.Age < minAge) && (d.Age > maxAge) && (d.CurrentState.Contains(currentState)));
        return PartialView("_DataTable", data);
    }

1 Ответ

1 голос
/ 21 сентября 2011

См. Здесь: Необязательные параметры в инфраструктуре MVC обрабатываются с помощью аргументов типа nullable для методов действия контроллера. Например, если метод может принимать дату как часть строки запроса, но вы хотитепо умолчанию это сегодняшняя дата, если параметр строки запроса отсутствует, вы можете использовать код, подобный этому, в следующем примере:

public ActionResult ShowArticles(DateTime? date)
{
    if(!date.HasValue)
    {
        date = DateTime.Now;
    }
    // ...
}

Итак, ваш код должен измениться на этот:

[HttpGet]
public ActionResult DataTableUpdate(string firstName, string lastName, int? minAge, int? maxAge, string currentState)
{
    firstName = firstName ?? "";
    lastName = lastName ?? "";
    minAge = minAge ?? 0;
    maxAge = maxAge ?? 0;
    currentState = currentState ?? "";
    List<DataMember> data = DataMemberCache.GetMembers().FindAll(d => (d.FirstName.Contains(firstName)) && (d.LastName.Contains(lastName)) && (d.Age < minAge) && (d.Age > maxAge) && (d.CurrentState.Contains(currentState)));
    return PartialView("_DataTable", data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...