Я новичок в ASP.NET MVC, и до сих пор мне удалось понять практически все, что мне нужно.Мои URL-адреса становятся все более сложными, и я могу заставить их маршрутизировать и делать то, что я хочу, но я уверен, что то, как я это делаю, неверно, и код, который я должен сделать, очень небрежный.Вот несколько URL-адресов:
mysite.com / Setup / FieldManager / Client / List
mysite.com/Setup/FieldManager/Client/Add
В основном макетURL-адрес, который я хочу, это Модуль / SubModule / Тип / Событие.Моя проблема в том, что мне нужно перейти к контроллеру установки, который вызывает действие диспетчера полей.Отсюда я должен сделать нелепое заявление о переключении, чтобы затем «подуправлять» маршрутизацией отсюда к другим правильным действиям.Мое действие Field Manager выглядит следующим образом:
public virtual ActionResult FieldManager(string type, string option, string inputType, string values, string label, string varname, string id)
{
CheckAuth(false);
ActionResult theView = null;
switch (type)
{
case "Client":
switch (option)
{
case "Add":
theView = AddClientField();
break;
case "List":
theView = ClientFieldManager();
break;
case "Save":
theView = SaveClientField(inputType, values, label, varname, id);
break;
default:
theView = EditClientField(option);
break;
}
break;
case "Case":
theView = View("CaseFieldManager");
break;
default:
theView = View("Error");
break;
}
return theView;
}
Я хочу сохранить тот же URL-адрес, который я использую, и напрямую вызывать правильный контроллер / действие без необходимости перенаправления вызова от одного действия к другому.Текущие маршруты, которые я настроил, также приведены ниже.
routes.MapRoute(
"Default",
"{controller}/{action}/{type}/{option}",
new { action = "Index", type = UrlParameter.Optional, option = UrlParameter.Optional }
);
routes.MapRoute(
"Root",
"",
new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
То, что у меня работает, просто слишком небрежно, и мне приходится конвертировать типы между вызовами.Я ищу лучший способ добиться того, почему я пытаюсь это сделать.Будет ли лучший способ сделать это, чтобы сделать сотни конкретных маршрутов для всех моих звонков, или я что-то упустил?