Проблемы маршрутов MVC4, когда параметры поиска пусты или пусты

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

URL-адрес выпуска: http://{ParentURL}/Admin/Menu/AddEdit/299921b2-3d7b-4e0a-b23e-5838f9b78654/1 — если заголовок не указан.

URL-адрес в рабочем состоянии: http://{ParentURL}/Admin/Menu/AddEdit/Test/299921b2-3d7b-4e0a-b23e-5838f9b78654/1 -> Здесь название теста

context.MapRoute(
                    "AdminOperation",
                    "Admin/{controller}/{action}/{title}/{id}/{pageno}",
                    new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional, title = UrlParameter.Optional }
                );

// метод контроллера

public ActionResult AddEdit(string id,  string title, int? pageno)
{
}

пожалуйста, помогите мне в этом.

С Уважением


person dotnetexpert    schedule 18.08.2013    source источник
comment
код контроллера можешь показать?   -  person ssilas777    schedule 18.08.2013
comment
добавлен метод контроллера   -  person dotnetexpert    schedule 18.08.2013
comment
Название не будет пустым в URL-адресе выпуска, оно будет привязано к 299921b2-3d7b-4e0a-b23e-5838f9b78654. Заполнители маршрута сопоставляются просто по порядку значений во входящем URL-адресе. Вы спрашиваете, как справиться с ошибкой отсутствия значения, или вы спрашиваете, почему значение отсутствует в URL-адресе?   -  person asymptoticFault    schedule 18.08.2013
comment
Я спрашиваю, если заголовок пуст, то как управлять указанным маршрутом, не создавая новый?   -  person dotnetexpert    schedule 19.08.2013


Ответы (1)


Если title иногда может быть null, на мой взгляд, лучшим подходом будет добавить еще один route без него и поместить его перед route, о котором вы упомянули:

context.MapRoute(
           "AdminOperationShort",
           "Admin/{controller}/{action}/{id}/{pageno}",
         new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional});  


     context.MapRoute(
           "AdminOperation",
           "Admin/{controller}/{action}/{title}/{id}/{pageno}",
           new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional, title = UrlParameter.Optional }
                        );
person Andrey Gubal    schedule 18.08.2013
comment
Здесь, используя ваш способ, он будет отображать значение заголовка Id в методе контроллера вместо того, чтобы заголовок отображался пустым. - person dotnetexpert; 19.08.2013