我需要在ASP.NET MVC中的模型中生成一些URL。我想调用UrlHelper.Action()之类的东西,它使用路由生成URL。我不介意填写通常的空白,例如主机名,方案等。

有什么我可以调用的方法吗?有没有一种方法来构造一个UrlHelper?

最佳答案

有用的提示,在任何ASP.NET应用程序中,您都可以获取当前HttpContext的引用。

HttpContext.Current

这是从System.Web派生的。因此,以下内容将在ASP.NET MVC应用程序中的任何地方工作:
UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext);
url.Action("ContactUs"); // Will output the proper link according to routing info

例:
public class MyModel
{
    public int ID { get; private set; }
    public string Link
    {
        get
        {
            UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext);
            return url.Action("ViewAction", "MyModelController", new { id = this.ID });
        }
    }

    public MyModel(int id)
    {
        this.ID = id;
    }
}

在创建的MyModel对象上调用Link属性将返回有效的URL,以基于Global.asax中的路由查看模型。

09-25 18:08