【问题标题】:Generate Url during runtime from asp.net mvc controller/action在运行时从 asp.net mvc 控制器/动作生成 Url
【发布时间】:2016-01-26 17:59:10
【问题描述】:

我有这样一个网址:

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 期货,但我找不到合适的方法或命名空间来使用该方法。

【问题讨论】:

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


    【解决方案1】:

    您是否正在寻找这样的东西:

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

    【讨论】:

      【解决方案2】:

      如果您有可用的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 属性,您需要将它们作为生成的url 的路由值。

      如果您从另一个类调用此代码,您可以将 RequestContext 从您的控制器/操作传递给该代码。

      【讨论】:

      • 我在不知道 MVC 的服务类中生成 url。 “YourAction”是硬编码的,我不希望这样。
      • 服务类如何知道使用哪个动作方法来生成 url?
      • 此时电子邮件模板会注入创建的 url。 url 是手工创建的......不是重构安全的 ;-)
      猜你喜欢
      • 1970-01-01
      • 2016-01-31
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多