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

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

Подскажите как реализовать следующий адрес:
site/{parametr}
То есть надо что бы зразу передавался для действия Index параметр и если parametr=index то отображалась главная страница, а в других случаях загружалось другое представление
  • Вопрос задан
  • 2638 просмотров
Решения вопроса 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();
}


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

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

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

Похожие вопросы