Как избежать обнуляемых параметров действия (и if
операторов)
Как вы видели по ответу @ Мухаммеда (кстати, тот, который должен быть принят в качестве правильного ответа), легко получить дополнительные параметры (фактически любые параметры маршрута) в действиях контроллера. Все, что вам нужно, это убедиться, что они обнуляемы (потому что они необязательны).
Но так как они не являются обязательными, вы получаете разветвленный код, который сложнее выполнить модульное тестирование. Следовательно, используя простой селектор метода действия, можно написать что-то похожее на это:
public ActionResult Index()
{
// do something when there's not ID
}
[RequiresRouteValues("id")]
public ActionResult Index(int id) // mind the NON-nullable parameter
{
// do something that needs ID
}
В этом случае использовался селектор метода настраиваемого действия, и его код и подробное объяснение можно найти в моем блоге . Такие действия легко понять / понять, выполнить модульное тестирование (без ненужных веток) и поддерживать их.