컨트롤러 .NET MVC에서 URL 생성
컨트롤러의 액션에서 이메일을 보내려면 링크를 구성 할 수 있어야합니다. 가장 좋은 방법은 무엇입니까? 경로가 변경 될 경우 직접 구성하고 싶지 않습니다.
각 이메일을 볼 수 있고 렌더링하여 보내야합니까? 그렇게하는 것이 좋은 방법 일 수 있습니다.
특정 작업의 경로를 얻으려면 다음을 사용하십시오 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 개의 매개 변수는 프로토콜 및 호스트 이름을 지정합니다.
문안 인사.
나는 같은 문제를 겪었고 Gidon의 답변에는 하나의 작은 결함이있는 것처럼 보입니다. 메일로 보낼 수없는 상대 URL을 생성합니다.
내 솔루션은 다음과 같습니다.
string link = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Authority + Url.Action("ResetPassword", "Account", new { key = randomString });
이렇게하면 전체 URL이 생성되며 응용 프로그램이 호스팅 서버에서 여러 수준의 깊이에 있고 80 이외의 포트를 사용하더라도 작동합니다.
편집 : 나는 이것도 유용하다는 것을 알았 습니다.
액션에 대한 절대 URL을 생성하는 다른 방법 :
var relativeUrl = Url.Action("MyAction"); //..or one of the other .Action() overloads
var currentUrl = Request.Url;
var absoluteUrl = new System.Uri(currentUrl, relativeUrl);
나는 이것이 오래된 질문이라는 것을 알고 있지만 ASP.NET Core에서 동일한 작업을 수행하려는 경우 액션 내부에 UrlHelper를 만드는 방법은 다음과 같습니다.
var urlHelper = new UrlHelper(this.ControllerContext);
또는에서 Controller.Url
상속받은 경우 속성을 사용할 수도 있습니다 Controller
.
참고 URL : https://stackoverflow.com/questions/699782/creating-a-url-in-the-controller-net-mvc
'IT story' 카테고리의 다른 글
자바 스크립트 객체 : 상위 항목 가져 오기 (0) | 2020.07.14 |
---|---|
Npm을 사용하여 github에서 특정 지점 설치 (0) | 2020.07.14 |
JavaScript 리스너, "keypress"가 백 스페이스를 감지하지 못합니까? (0) | 2020.07.14 |
svn에서 체크 아웃 된 Android 프로젝트를 열 때 "subversion 명령 줄 클라이언트 : svn을 사용할 수 없습니다"오류 (0) | 2020.07.14 |
Apache HttpClient로 유효하지 않은 SSL 인증서를 처리하는 방법은 무엇입니까? (0) | 2020.07.14 |