Можно ли использовать подстановочный знак при настройке регистрации области на маршруте MVC? - PullRequest
1 голос
/ 21 февраля 2012

У меня есть адрес, подобный следующему:

www.stack.com/content-00000/solutions-about

Моя регистрация маршрута (непроверенная, но, возможно, на 90% в порядке) выглядит следующим образом:

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

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Content_default",
                "content-{id}/{title}",
                new { controller = "Server", action = "Get" },
                new { id = @"^\d{5}$" }
                new { title = UrlParameter.Optional }
            );
        }
    }

Может кто-нибудь подтвердить, если этоправильный путь для меня, чтобы сделать маршрут

a) Go to the "Content" Area
b) Go to the "Server" Controller
b) Go to the "Get " action 
c) Five digits that follow will be put into a parameter called id?

Также, как я могу сделать это перейти к другому действию, такому как «ошибка», если «Content-» не сопровождается пятью числами?

1 Ответ

2 голосов
/ 21 февраля 2012

Вы указываете от а) до г) выглядит правильно.Чтобы реализовать последнюю часть, я бы сразу добавил еще одно правило после правила, которое вы показали, которое будет точно таким же, но без регулярного выражения и, возможно, с пометкой 'id' как необязательной, что-то вроде: `

context.MapRoute(
                "Content_Error",//or maybe *null* here
                "content-{id}/{title}",
                new { controller = "Server", action = "Get" },
                new { id = UrlParameter.Optional,
                   title = UrlParameter.Optional }
            );

`

Поскольку это правило следует вашему основному правилу, оно будет выполнено, только если ID не удовлетворяет вашему регулярному выражению в первом правиле.

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