asp.net - tutorial - 在控制器.NET MVC中創建一個URL




mvc add model (4)

另一種為動作創建絕對URL的方法:

var relativeUrl = Url.Action("MyAction");  //..or one of the other .Action() overloads
var currentUrl = Request.Url;

var absoluteUrl = new System.Uri(currentUrl, relativeUrl);

https://code.i-harness.com

我需要能夠在控制器上的Action中構建一個鏈接來發送電子郵件。 做這件事的最佳做法是什麼? 如果我的路線改變,我不想自己構建它。

我應該為每封電子郵件查看並呈現並發送郵件嗎? 這可能是一個很好的做法。


如果您需要完整的網址(例如通過電子郵件發送),請考慮使用以下內置方法之一:

有了這個,你可以修復de路由以用於構建de 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個參數都指定協議和主機名。

問候。


我知道這是一個老問題,但如果你想在ASP.NET Core中做同樣的事情,那麼你可以在一個動作中創建UrlHelper:

var urlHelper = new UrlHelper(this.ControllerContext);

或者,如果從Controller繼承,則可以使用Controller.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);

智能感知會給你每個參數的含義。

從評論更新 :控制器已經有一個UrlHelper

string url = this.Url.Action("About", "Home", null); 




asp.net-mvc