在ViewModel中使用UrlHelper的ASP.NET

时间:2015-09-18 05:12:27

标签: asp.net-mvc-5

我在构建视图模型时尝试强力键入(例如它)Web应用程序的某些URL。

所以我有类似的东西:

   new MyModel {
           Text = "Foo",
           Url = new UrlHelper(Request.RequestContext).Action("MyAction")
   }

这在控制器方法中运行得很好,但我还有另一种情况,我没有收到Request.Context,因为它在另一个类中被调用。

是否有另一种方法可以做到这一点,以便我不使用"魔术字符串"和/或依赖于上下文对象?

1 个答案:

答案 0 :(得分:1)

使用参考

HttpContext.Current

源自system.web。以下代码可以在您的应用程序中的任何位置使用。

UrlHelper objUrlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
objUrlHelper.Action("About");

示例:

public class MyViewModel
{
    public int ID { get; private set; }
    public string Link
    {
        get
        {
            UrlHelper objUrlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
            return objUrlHelper.Action("YourAction", "YourController", new { id = this.ID });
        }
    }

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