programing

ASP.NET MVC-URL의 매개 변수 추출

yoursource 2021. 1. 14. 23:24
반응형

ASP.NET MVC-URL의 매개 변수 추출


내 URL의 매개 변수를 추출하려고합니다.

/ 관리 / 고객 / 편집 / 1

추출물 : 1

/ Administration / Product / Edit / 18? allowed = true

추출 : 18? allowed = true

/ Administration / Product / Create? allowed = true

추출 : ? allowed = true

누군가 도울 수 있습니까? 감사!


최신 정보

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"];

public ActionResult Index(int id,string value)

이 함수는 URL에서 값을 가져옵니다. 그 후 아래 함수를 사용할 수 있습니다.

Request.RawUrl -현재 페이지의 전체 URL 반환

RouteData.Values -URL 값 모음 반환

Request.Params -반환 이름 값 컬렉션


ControllerContext.RoutValues ​​개체에서 이러한 매개 변수 목록을 키-값 쌍으로 가져올 수 있습니다.

일부 변수에 저장할 수 있으며 논리에서 해당 변수를 사용할 수 있습니다.


매개 변수의 값을 얻기 위해 RouteData를 사용할 수 있습니다.

더 많은 맥락이 좋을 것입니다. 애초에 '추출'해야하는 이유는 무엇입니까? 다음과 같은 작업이 있어야합니다.public ActionResult Edit(int id, bool allowed) {}


이 방법을 썼습니다.

    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))
{

}

I'm not familiar with ASP.NET but I guess you could use a split function to split it in an array using the / as delimiter, then grab the last element in the array (usually the array length -1) to get the extract you want.

Ok this does not seem to work for all the examples.

What about a regex?

.*(/|[a-zA-Z]+\?)(.*)

then get that last subexpression (.*), I believe it's $+ in .Net, I'm not sure

ReferenceURL : https://stackoverflow.com/questions/5003953/asp-net-mvc-extract-parameter-of-an-url

반응형