猿问

带路由的ASP.Net MVC处理段

我是ASP.Net MVC的新手,现在遇到了问题。这里是。


routes.MapRoute(

    "SearchResults",// Route name

    "{controller}/{action}/{category}/{manufacturer}/{attribute}",

    new { 

        controller = "Home", 

        action = "CategoryProducts", 

        category = UrlParameter.Optional, 

        manufacturer = UrlParameter.Optional, 

        attribute = UrlParameter.Optional 

    }

);

这是我的控制器方法。


public ActionResult CategoryProducts(string category, string manufacturer, string attribute) 

{

    string[] categoryParameter = category.Split('_');

    .

    .

    .

    return View();

}

当我点击url时,类别参数始终为null


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

我得到这个错误


Object reference not set to an instance of an object


我该如何解决这个问题。我需要从细分中提取ID并使用它。同样,我也需要处理制造商和属性字符串。


还有一件事


我如何使我的函数获得至少一个参数而不受顺序限制?我的意思是我想做类似的功能,以便可以处理类别或制造商或属性或类别+制造商以及所有组合/


尚方宝剑之说
浏览 511回答 2
2回答

紫衣仙女

只有最后一个参数可以标记为UrlParameter.Optional(否则路由引擎无法匹配哪个参数)。为了使当前的实现工作有效,您需要使用http://localhost:50877/Home/CategoryProducts?category=c_50_ShowcasesDisplays
随时随地看视频慕课网APP
我要回答