it-swarm-ru.tech

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

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

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

извлечение: 1

/ Администрирование/Продукт/Редактировать/18? Allow = true

извлечение: 18? позволено = верно

/ Администрирование/Продукт/Создать? Позволило = true

извлечение: ? разрешено = верно

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

51
Kim Tranjan

Обновление

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 /. Или вы можете захотеть заглянуть в области 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"];
85
David Glenn
public ActionResult Index(int id,string value)

Эта функция получает значения из URL После этого вы можете использовать функцию ниже 

Request.RawUrl- вернуть полный URL текущей страницы 

RouteData.Values- Вернуть коллекцию значений URL

Request.Params- Возвращаемое имя Коллекция значений 

4
yogesh lodha

Вы можете получить список этих параметров в объекте ControllerContext.RoutValues ​​в виде пары ключ-значение. 

Вы можете сохранить его в некоторой переменной и использовать эту переменную в своей логике. 

1
Sameer Joshi

Для получения значений ваших параметров вы можете использовать RouteData.

Больше контекста было бы приятно. Почему вам нужно «извлечь» их в первую очередь? У вас должно быть действие как: public ActionResult Edit(int id, bool allowed) {}

0
Jakub Konecki

Я написал этот метод:

    private string GetUrlParameter(HttpRequestBase request, string parName)
    {
        string result = string.Empty;

        var urlParameters = HttpUtility.ParseQueryString(request.Url.Query);
        if (urlParameters.AllKeys.Contains(parName))
        {
            result = urlParameters.Get(parName);
        }

        return result;
    }

И я называю это так:

string fooBar = GetUrlParameter(Request, "FooBar");
if (!string.IsNullOrEmpty(fooBar))
{

}
0
Tony_KiloPapaMikeGolf