Segmentos de manipulação de asp.net MVC com rota

Eu sou novo no ASP.Net MVC e estou enfrentando um problema. Aqui está.

routes.MapRoute(
    "SearchResults",// Route name
    "{controller}/{action}/{category}/{manufacturer}/{attribute}",
    new { 
        controller = "Home", 
        action = "CategoryProducts", 
        category = UrlParameter.Optional, 
        manufacturer = UrlParameter.Optional, 
        attribute = UrlParameter.Optional 
    }
);

E aqui está o meu método de controle.

public ActionResult CategoryProducts(string category, string manufacturer, string attribute) 
{
    string[] categoryParameter = category.Split('_');
    .
    .
    .
    return View();
}

quando eu clico no URL, sempre fico nulo no parâmetro de categoria

http://localhost:50877/Home/CategoryProducts/c_50_ShowcasesDisplays

Eu recebo este erro

Object reference not set to an instance of an object

Como posso resolver este problema. Eu preciso extrair o id do segmento e usá-lo. Da mesma forma, eu preciso processar o fabricante e atribuir seqüências de caracteres também.

Mais uma coisa

Como posso fazer com que minha função obtenha pelo menos um parâmetro, independentemente da ordem? Quero dizer, quero criar funções como essa para lidar com categoria ou fabricante ou atributos ou categoria + fabricante e todas as combinações /

questionAnswers(1)

yourAnswerToTheQuestion