Как я могу настроить простой маршрут с областями в ASP.NET MVC3? - PullRequest
0 голосов
/ 06 января 2012

Я хочу использовать Области, поэтому я настроил следующее:

public class ContentAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Content";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Content_default",
                "Content/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

Я хотел бы, чтобы человек, который вводит следующий URL, был направлен к контроллеру в моей области контента.

www.stackoverflow.com / Content / 0B020D / тест-данных

Я бы хотел, чтобы кто-то вводил любой URL с "/ Content /", за которым следовало бы отправлять шесть символов:

- Page action in a controller named ItemController
- Six characters passed as the parameter id
- Optional text after that (test-data in this case) to be put into parameter title 

Как я могу это сделать? Я не очень знаком с настройкой маршрутов при использовании областей.

шесть цифр для помещения в переменную с именем ID

1 Ответ

2 голосов
/ 06 января 2012

Итак, вы ищете что-то вроде

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Content_default",
        "Content/{id}/{optional}",
        new { controller = "ItemController", action = "TheActionYouWantThisToAllRouteTo" }
}

Это будет по умолчанию все для одного контроллера и метода действия (который вы должны указать в своем экземпляре).Затем вы можете получить данные следующим образом:

public ActionResult TheActionYouWantThisToAllRouteTo (string id, string optional)
{
    // Do what you need to do
}

При настройке маршрутов вы можете назвать нужные фрагменты информации в URL-адресе, заключив их в пару { } фигурных скобок.Если вы предпочитаете, чтобы имя optional было isTestData, вы просто изменили бы маршрут на: "Content/{id}/{isTestData}".

Примечание: Поскольку вы не указали метод действия по умолчаниюВы хотите, чтобы это направлялось, я заменил его на TheActionYouWantThisToAllRouteTo.Измените эту строку, чтобы прочитать метод действия, к которому вы хотите, чтобы все это делали.Это также означает, что у вас не может быть «обычного» контроллера с именем ContentController.

Редактировать

Стивен Уолтер имеет хороший пост в блоге по пользовательскому маршрутуограничения. Его можно найти здесь .Это должно быть хорошим началом, чтобы сделать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...