在我的ASP.NET MVC3网站中,我在视图中使用Url.Action
来生成URL。
@Url.Action("Profile", "Users", new { @Id = Model.UserId, name = Model.NickName })
现在,在我的一个帮助类中,我需要做同样的事情。但是会出现这个错误信息:"当前上下文中不存在“Url”的名称。
是否有其他函数可以用来生成url?
在我的ASP.NET MVC3网站中,我在视图中使用Url.Action
来生成URL。
@Url.Action("Profile", "Users", new { @Id = Model.UserId, name = Model.NickName })
现在,在我的一个帮助类中,我需要做同样的事情。但是会出现这个错误信息:"当前上下文中不存在“Url”的名称。
是否有其他函数可以用来生成url?
在你的例子中,@Url
是 UrlHelper
类的一个实例。您可以创建它的一个实例并在任何类中使用,就像下面的示例一样,但是您需要访问相应视图的RequestContext
(在我的示例中命名为 context)。
var urlHelper = new UrlHelper(context);
string absUrl = urlHelper.Action("ActionName",
"ControllerName", null, Request.Url.Scheme);
RedirectToRouteResult
实例。 - Sergey Rybalkin@Url
是Razor助手,仅适用于视图页面。不能在.NET类文件中使用。var urlHelper = new UrlHelper(context);
string absUrl = Url.Action("Users", "Users", new { Id = UserId, name =.NickName }, Request.Url.Scheme);
return RedirectToAction("Profile", "Users", new { @Id = Model.UserId, name = Model.NickName })
RouteValueDictionary rvd = new RouteValueDictionary
{
{"controller", "ControllerName"},
{"action", "ActionName"},
{"area", ""}
};
VirtualPathData virtualPathData
= RouteTable.Routes.GetVirtualPath(null, new RouteValueDictionary());
return virtualPathData.VirtualPath;
因此,仍然可以使用此方法获取 URL 而无需提供上下文。
上下文始终是必要的,因为它具有服务器和虚拟目录(如果存在)的信息,其中应用程序正在运行。
HtmlHelper<TModel>
扩展? - jrummell