@rgamretsky
SharePoint Develorep(а хочется в ASP.NET MVC dev)

Как реализовать роут в ASP.net MVC?

Подскажите как реализовать следующий адрес:
site/{parametr}
То есть надо что бы зразу передавался для действия Index параметр и если parametr=index то отображалась главная страница, а в других случаях загружалось другое представление
  • Вопрос задан
  • 2634 просмотра
Решения вопроса 1
Valeriy1991
@Valeriy1991
Разработчик .NET C# (ASP.NET MVC) в Alfa-B, Moscow
Добрый день!

Если я Вас правильно понял, то маршрут будет такой:
routes.MapRoute(
	name: "",
	url: "site/{parametr}",
	defaults: new { controller = "Home", action = "Index", parametr = "index" }
);

Если Вам необходимо, чтобы значение parametr было равно "index" при запросе главной страницы сайта (т.е. пользователь запрашивает, например, "yoursite.ru"), то самым первым маршрутом должен быть следующий маршрут:
routes.MapRoute(
	name: "",
	url: "",
	defaults: new { controller = "Home", action = "Index", parametr = "index" }
);

Заметьте, что url пустой. Это соответствует шаблону URL вида "/", поэтому такой маршрут будет работать для корневого URL всего сайта, т.е. для "yoursite.ru".

Для такого маршрута Ваш метод действия должен выглядеть примерно так:
public ActionResult Index(string parametr)
{
	if(parametr != null)
	{
		switch(parametr)
		{
			case "index":
				return View();
			default:
				//return RedirectToAction("IndexOther", "Home");
				//или
				return View("IndexOther");
		}
	}	
	// Здесь что-то происходит...
	return View(); 
}

либо можно указать переменную parametr со значением по-умолчанию в самом методе действия:
public ActionResult Index(string parametr = "index")
{
	switch(parametr)
	{
		case "index":
			return View();
		default:
			//return RedirectToAction("IndexOther", "Home");
			//или
			return View("IndexOther");
	}
	// Здесь что-то происходит...
	return View();
}


Честно скажу, я не проверял эти маршруты в, так сказать, рабочей среде. Если у Вас не получится, тогда сообщите об этом, сделаю тестовый проект, проверю.

Надеюсь, смог Вам помочь.
Успехов!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы