【发布时间】:2019-11-01 07:55:50
【问题描述】:
我正在使用面向 .NET 框架 4.6.1 的 ASP.NET MVC 5.2.7。
从内部,比如一个业务对象,而不是从控制器或视图中,我如何获取虚拟路径,即操作的完整 url。
这样:
"~/Action/Controller/param"
变成
"/Action/Controller/param"
为什么?
对于那些想知道有什么大不了的人,我为什么不只是 删除前导波浪号 (~) 字符,两条路径(带有 和没有波浪号的)可能会有所不同,如果您的 web应用没有部署在站点根目录下。
例如你有一个映射到
domain.com/foo的网站。那么你 想"~/Controller/Action"返回/foo/Controller/Action。
例如
class MyBusinessObject
{
public void DoSomething()
{
// From here, what do I do such that
// "~/Controller/Action/param" becomes
// /Controller/Action/param
// without doing it by hand
}
}
class MyController : Mvc.Controller
{
public ActionResult SomeAction()
{
new MyBusinessObject().DoSomething();
...
return View();
}
}
MVC 或 .NET 框架库中是否已有方法?
换句话说,如果我可以从控制器外部调用Url.Content() 扩展,那就可以了。
我以前做过很多次,但我总是会忘记并发布一个关于它的问题。但我找不到我之前关于这个的问题。
【问题讨论】:
标签: c# asp.net .net asp.net-mvc