0
Я хотел бы знать, как сохранить UrlRedirect
в ASP.NET MVC-4:Странно редирект поведение
К примеру у меня есть это:
/admin/category/add/81/142
Но после того, как я воспользуюсь этим:
return RedirectToAction("Add", "Category", new RouteValueDictionary
{
{"id", siteid.Value},
{"cid", pid.HasValue ? pid.Value : cid.Value }
});
я получаю это:
/admin/category/add?id=81&cid=142
Но я хочу оригинальный один /admin/category/add/81/142
Вот моя конфигурация маршрутизации:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRouteLowercase(
"Admin_LogOn",
"Admin/{controller}/{action}/",
defaults: new { controller = "Account", action = "LogOn" },
constraints: null
);
context.MapRouteLowercase(
"Admin_Category_List_Add",
"Admin/{controller}/{action}/{id}/{cid}/{pid}",
defaults:
new
{
controller = "Category",
action = "Create",
id = UrlParameter.Optional,
cid = UrlParameter.Optional,
pid = UrlParameter.Optional
},
constraints: null
);
context.MapRouteLowercase(
"Admin_TwoParameters",
"Admin/{controller}/{action}/{id}/{cid}",
defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional, cid = UrlParameter.Optional },
constraints: null
);
context.MapRouteLowercase(
"Admin_default",
"Admin/{controller}/{action}/{id}",
defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional },
constraints: null
);
}
Скажите, пожалуйста, могу ли я сделать это более общее поведение , как реализовать пользовательскую маршрутизацию или что-то еще? – IamStalker
Не с пользовательской маршрутизацией вы используете его для сопоставления формата URL-адреса, который вы хотите, с соответствующими контроллерами и методами. 'Url.Action' уже является« общим поведением », а также передает ему« routevalues ». Только он действительно даст вам пару ключ-значение (например, id = 81). Но это самое безопасное, что вы можете пойти, по сравнению с моим предлагаемым решением - довольно хороший ответ на ваш вопрос. Альтернатива - вы можете передать (динамический) объект методу, который будет строить для вас строку, в дополнение к тому, что дает Url.Action. –
Спасибо за предложение, ваше решение работало красиво. – IamStalker