Подтвердить что ты не робот

ASP.NET MVC - Извлечь параметр URL-адреса

Я пытаюсь извлечь параметры моего URL-адреса, что-то вроде этого.

/Администрирование/Клиент/Редактировать/1

extract: 1

/Администрирование/Product/Редактировать/18? Разрешено = истина

extract: 18? allowed = true

/Администрирование/Product/Create? Разрешено = истина

extract:? allowed = true

Кто-нибудь может помочь? Спасибо!

4b9b3361

Ответ 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, я не уверен