컨트롤러 .NET MVC에서 URL 생성
이메일을 보내려면 컨트롤러의 Action에 링크를 구성할 수 있어야 합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?노선이 바뀔 경우를 대비해 제가 직접 건설하고 싶지는 않습니다.
제가 이메일마다 뷰를 가지고 그것을 렌더링해서 보내면 되나요?그것이 좋은 방법일 수도 있습니다.
특정 작업에 대한 경로만 가져오려면 다음을 사용합니다.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);
인텔리센스는 각 매개 변수의 의미를 제공합니다.
주석에서 업데이트: 컨트롤러에 이미 다음이 있습니다.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)
두 방법 모두에서 마지막 두 매개 변수는 프로토콜과 호스트 이름을 지정합니다.
안부 전해요.
저도 같은 문제가 있었는데, 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
'programing' 카테고리의 다른 글
| http 핸들러 인터페이스에서 boolIsReuseable의 중요성 (0) | 2023.05.23 |
|---|---|
| node.js에 대한 사용자 인증 라이브러리? (0) | 2023.05.23 |
| Dim과 Private의 차이 (0) | 2023.05.23 |
| 지정된 DateTime 개체를 사용하여 월의 첫 번째 및 마지막 날 가져오기 (0) | 2023.05.23 |
| 파일에서 데이터를 가져오려고 할 때 "mongoimport"를 가져오는 것은 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. (0) | 2023.05.23 |