0

ASP.NET MVC를 처음 사용하고 다음 시나리오에서 놀면서 새로운 것을 배우려고했지만 작동하지 않았습니다.ASP.NET MVC 응용 프로그램을 통해 url 매개 변수에 상수 값을 사용할 수 있습니까?

사실, 모든 요청에 ​​대해 URL에 상수 값 매개 변수를 유지하려고합니다. 우리는 Web.config 파일에 <sessionState cookieless="true"/> 사용 후, URL에 세션 값을 가지고 있으며이 형식

http://localhost:49961/(S(swl0ancynhWw2103jxm4ydwf))/Customer/Home

에서 세션 값을 보여주는 시작하지만이에 추가 영구 매개 변수가하려고 할 때 비슷한 링크를

http://localhost:49961/Customer/Home?constantVal=12345

내가 어떤 HttpGet 또는 HttpPost 방법을 사용하고 있는지이 매개 변수는, URL에 남아 가정을 다음과 같이, 모든 요청에 ​​대해 URL의 끝.

지금까지 내가 시도 다음과 같은 방법으로 Global.asax.cs 파일 내의 Application_BeginRequest()를 사용하여 URL을 다시 작성 :

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    // Suppose Request.FilePath = /Customer/Home/UploadFile 
    // Unable to use "?constantVal" as required 
    Context.RewritePath(Request.FilePath + "/12345"); 
} 

작업 방법 :

public ActionResult UploadFile(string id = null) 
{ 
    return View(); 
} 

를 위의 방법으로 , 내가 id = "12345"에 대한 가치를 얻을 수는 있지만 UploadFile 조치가 있지만 URL에 아무 것도 표시되지 않거나 모두 HttpGet이 충족되어야합니다. 수신 id 매개 변수가 필요합니다.

시스템을 더 잘 이해할 수 있도록 열정을 표현하는 것이 좋습니다. :)

답변

0

ASP.NET MVC 응용 프로그램을 통해 URL 매개 변수에 상수 값을 사용할 수 있습니까?

예.

Route 클래스 쿼리 문자열 값을 완전히 무시하므로 예제 (http://localhost:49961/Customer/Home?constantVal=12345)가 작동하지 않습니다. 그래도 extend routing to make it query string aware 일 수 있습니다.

기본적으로 경로 값은 automatically reused from the current request입니다. 따라서 값을 입력하면 사이트의 모든 URL이 UrlHelper (또는 다음을 사용하는 함수)으로 작성된 경우 한 요청에서 다음 요청으로 "고정"됩니다. ActionLink과 같은 UrlHelper). URL에 문화권을 넣는 예제는 ASP.NET MVC 5 culture in route and url을 참조하십시오.이 예제에서는 요청을 자동으로 보존합니다.

즉,이 문맥에서 RewritePath을 사용하는 것은 말이되지 않습니다. RewritePathURL을 HTTP 처리기에서 사용자가 보는 브라우저의 URL이 아닌으로 변경합니다. 사실 컨트롤러 요청에 을 직접적으로 연결하기 위해을 라우팅하기 때문에 MVC에서 RewritePath을 사용하는 것은 실제로 이해가 가지 않습니다. 사용자에게 표시되는 URL을 변경하려면 302 또는 301 리디렉션을해야합니다.특정 조건에서 URL에 값을 자동으로 리디렉션하여 사용 사례와 유사한 예를 보려면 How to change route to username after logged in?을 참조하십시오.

+0

고맙습니다 @ NightOwl888, 이동할 올바른 경로를 보여줍니다. 당신은 링크의 모든 곳에 있습니다 .. 당신의 지식을 계속 공유 :) –