在运行时从asp.net mvc控制器/动作生成URL

时间:2016-01-26 17:59:11

标签: asp.net-mvc-5 asp.net-mvc-futures

我有这样的网址:

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

我需要一个方法:

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

我需要从.cs类调用上面的方法而不是razor html文件。

我该怎么做?我听说过asp.net mvc期货,但我找不到合适的方法或命名空间来使用该方法。

2 个答案:

答案 0 :(得分:3)

你在寻找这样的东西:

string url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext);

答案 1 :(得分: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"});

假设YourViewModel具有AgeCode属性,您需要将这些作为生成网址的路由值。

如果您从其他类调用此代码,则可以将RequestContext传递给控制器​​/操作中的代码。