我有这样的网址:
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期货,但我找不到合适的方法或命名空间来使用该方法。
答案 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
具有Age
和Code
属性,您需要将这些作为生成网址的路由值。
如果您从其他类调用此代码,则可以将RequestContext
传递给控制器/操作中的代码。