У меня есть приложение ASP.NET MVC, где я хочу, чтобы действие контроллера Home\Index
принимало необязательный параметр, который будет использоваться сервером для принятия решения о том, какой вид будет возвращен.По умолчанию маршрут не захватывает строку запроса
Так я определил следующие маршруты:
routes.MapRoute(
name: "LogOn",
url: "logon/{id}",
defaults: new {controller = "Home", action = "LogOn", id = UrlParameter.Optional}
);
routes.MapRoute(
name: "register",
url: "register/{id}",
defaults: new {controller = "Home", action = "Register", id = UrlParameter.Optional}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
);
Эти маршруты позволяют мне упростить мой URL, не имея, чтобы указать контроллер Home
так URL, как mysite/Home/logon
упрощены до mysite/logon
.The Home/Index действия, где все не являющиеся разрешенные URLs идти, выглядит так:
public ActionResult Index(string id="")
{
if (id.Contains("App"))
return View("AppView")
return View();
}
ПРОБЛЕМА
Когда я пришлю localhost/#app/41
на свой сервер, ожидаю, что id
будет #app/41
, но это не так. Значение id
всегда равно null.
Есть что-то неправильное/отсутствующее в моем определении пути?
Вы имеете в виду '#' или '?' ... – haim770