我在构建视图模型时尝试强力键入(例如它)Web应用程序的某些URL。
所以我有类似的东西:
new MyModel {
Text = "Foo",
Url = new UrlHelper(Request.RequestContext).Action("MyAction")
}
这在控制器方法中运行得很好,但我还有另一种情况,我没有收到Request.Context,因为它在另一个类中被调用。
是否有另一种方法可以做到这一点,以便我不使用"魔术字符串"和/或依赖于上下文对象?
答案 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;
}
}