답변:
특정 작업의 경로를 얻으려면 다음을 사용하십시오 UrlHelper
.
UrlHelper u = new UrlHelper(this.ControllerContext.RequestContext);
string url = u.Action("About", "Home", null);
하이퍼 링크를 만들려면
string link = HtmlHelper.GenerateLink(this.ControllerContext.RequestContext, System.Web.Routing.RouteTable.Routes, "My link", "Root", "About", "Home", null, null);
Intellisense는 각 매개 변수의 의미를 제공합니다.
의견에서 업데이트 : 컨트롤러에는 이미 UrlHelper
:
string url = this.Url.Action("About", "Home", null);
전체 URL이 필요한 경우 (예 : 이메일로 전송) 다음 기본 제공 방법 중 하나를 사용하십시오.
이를 통해 URL을 빌드하는 데 사용할 경로를 만듭니다.
Url.RouteUrl("OpinionByCompany", new RouteValueDictionary(new{cid=newop.CompanyID,oid=newop.ID}), HttpContext.Request.Url.Scheme, HttpContext.Request.Url.Authority)
여기서 URL은 경로 엔진이 올바른 URL을 결정한 후에 작성됩니다.
Url.Action("Detail","Opinion",new RouteValueDictionary(new{cid=newop.CompanyID,oid=newop.ID}),HttpContext.Request.Url.Scheme, HttpContext.Request.Url.Authority)
두 방법 모두에서 마지막 2 개의 매개 변수는 프로토콜과 호스트 이름을 지정합니다.
문안 인사.
Url.Action(action, controller, routevalue, protocol)
하면 전체 URL이 생성되므로 필요하지 않은 경우 호스트 이름을 지정할 필요가 없습니다.
나는 같은 문제를 겪었고 Gidon의 대답에는 하나의 작은 결함이있는 것처럼 보입니다. 메일로 보낼 수없는 상대 URL을 생성합니다.
내 솔루션은 다음과 같습니다.
string link = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Authority + Url.Action("ResetPassword", "Account", new { key = randomString });
이렇게하면 전체 URL이 생성되며 응용 프로그램이 호스팅 서버에서 여러 수준의 깊이에 있고 80 이외의 포트를 사용하더라도 작동합니다.
편집 : 나는 이것도 유용하다는 것을 알았 습니다.