Я новичок в c # mvc и пытаюсь создать маршрут с несколькими параметрами, который выглядит следующим образом:
контроллер / действие / parameterOne / parameterTwo
но в некоторых случаях я просто буду использовать один из них, чтобы маршрут выглядел так:
контроллер / действие / parameterOne
вот мой RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name:"Default2",
url: "{controller}/{action}/{category}/{id}",
defaults: new { controller = "Home", action = "Index", category = UrlParameter.Optional, id = UrlParameter.Optional }
);
}
теперь в действии моего контроллера мне нужно проверить, есть ли только один или два параметра, чтобы я мог возвращать разные представления для каждого условия, вот контроллер:
[HttpGet]
public ActionResult someAction(string category, string id)
{
if (String.IsNullOrWhiteSpace(id))
{
return View("viewOne");
}
else
{
return View("ViewTwo");
}
}
проблема в том, что оператор if не работает полностью? потому что, если это условие: String.IsNullOrWhiteSpace(id)
и если я напишу контроллер / действие / параметрOne , это вернет ViewOne
но если я напишу контроллер / действие / параметрOne / параметрTwo также вернет ViewOne
но теперь, если инвертировать условие, и я пишу !String.IsNullOrWhiteSpace(id)
, оба URL возвращают ViewTwo.
Так кто-нибудь имеет представление, почему это происходит?