ASP.NET MVC - Извлечь параметр URL-адреса
Я пытаюсь извлечь параметры моего URL-адреса, что-то вроде этого.
/Администрирование/Клиент/Редактировать/1
extract: 1
/Администрирование/Product/Редактировать/18? Разрешено = истина
extract: 18? allowed = true
/Администрирование/Product/Create? Разрешено = истина
extract:? allowed = true
Кто-нибудь может помочь? Спасибо!
Ответы
Ответ 1
Обновление
RouteData.Values["id"] + Request.Url.Query
Будет соответствовать всем вашим примерам
Не совсем ясно, чего вы пытаетесь достичь. MVC передает вам URL-адреса через привязку модели.
public class CustomerController : Controller {
public ActionResult Edit(int id) {
int customerId = id //the id in the URL
return View();
}
}
public class ProductController : Controller {
public ActionResult Edit(int id, bool allowed) {
int productId = id; // the id in the URL
bool isAllowed = allowed // the ?allowed=true in the URL
return View();
}
}
Добавление сопоставления маршрутов в файл global.asax.cs до того, как по умолчанию будет обрабатываться элемент /administration/part. Или вы можете посмотреть в области MVC.
routes.MapRoute(
"Admin", // Route name
"Administration/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
Если это необработанные данные URL-адреса после этого, вы можете использовать один из различных свойств URL и запроса, доступных в действии вашего контроллера.
string url = Request.RawUrl;
string query= Request.Url.Query;
string isAllowed= Request.QueryString["allowed"];
Похоже, что Request.Url.PathAndQuery
может быть тем, что вы хотите.
Если вам нужен доступ к исходным данным, вы можете использовать
string isAllowed = Request.Params["allowed"];
string id = RouteData.Values["id"];
Ответ 2
public ActionResult Index(int id,string value)
Эта функция получает значения формы URL
После этого вы можете использовать функцию ниже
Request.RawUrl
- верните полный URL-адрес текущей страницы
RouteData.Values
- Возврат коллекции значений URL
Request.Params
- Возвращаемое имя Значение Коллекции
Ответ 3
Вы можете получить этот список параметров в объекте ControllerContext.RoutValues в качестве пары ключ-значение.
Вы можете сохранить его в некоторой переменной, и вы используете эту переменную в своей логике.
Ответ 4
Чтобы получить значения ваших параметров, вы можете использовать RouteData.
Больше контекста было бы неплохо. Почему вам нужно "извлечь" их в первую очередь? У вас должно быть действие вроде: public ActionResult Edit(int id, bool allowed) {}
Ответ 5
Я не знаком с ASP.NET, но я думаю, вы могли бы использовать функцию split, чтобы разбить ее в массиве с помощью разделителя /as, а затем захватить последний элемент в массив (обычно длина массива -1), чтобы получить желаемый экстракт.
Хорошо, что это не работает для всех примеров.
Как насчет регулярного выражения?
.*(/|[a-zA-Z]+\?)(.*)
то получите это последнее подвыражение (.*)
, я считаю, что это $+
в .Net, я не уверен