2016-01-26 29 views
2

在運行時間期間生成網址我有這樣一個URL:從asp.net MVC控制器/動作

www.test.com/MyAreaName/MyControllerName/MyAction?key1=value&key2=value 

我需要一種方法,如:

string generatedUrlWithQueryParams = Url.Action<MyController>(x => x.MyAction(MyViewModel)); 

我需要從調用上述方法.cs類不是從剃刀html文件。

我該怎麼做?我聽說過asp.net mvc futures,但我找不到使用該方法的適當方法或名稱空間。

回答

1

如果您有Request可用(它可用於您的控制器操作),則可以使用UrlHelper類。

var urlBuilder = new UrlHelper(Request.RequestContext); 
var url = urlBuilder .Action("YourAction", new YourViewModel { Age = 44, Code = "Test"}); 

var url = urlBuilder .Action("YourAction", "YourController", 
              new YourViewModel { Age = 44, Code = "Test"}); 

假設YourViewModelAgeCode財產,你需要那些爲生成的URL的路由值。

如果您從另一個班級調用此代碼,則可以將RequestContext傳遞給您的控制器/操作中的代碼。

+0

我生成服務類的網址是不知道MVC的。 「YourAction」是硬編碼的,我不希望那樣。 – Pascal

+0

服務類如何知道使用哪種操作方法進行網址生成? – Shyju

+0

目前電子郵件模板已獲取創建的URL注入。網址是由手工創建的......不重構安全;-) – Pascal

3

你是正在尋找這樣的事情:

string url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext); 
相關問題