原本的Url.Action方法是利用RouteCollection来实现Url的Routing的。
所以这里用一个扩展方法重现一下
using System.Web.Routing;
static public class CUrl {
public static string Action(this Controller c, string controller, string action) {
RouteValueDictionary rvd = new RouteValueDictionary();
rvd.Add("controller", controller);
rvd.Add("action", action);
return RouteTable.Routes.GetVirtualPath(c.ControllerContext, rvd).VirtualPath;
}
}
static public class CUrl {
public static string Action(this Controller c, string controller, string action) {
RouteValueDictionary rvd = new RouteValueDictionary();
rvd.Add("controller", controller);
rvd.Add("action", action);
return RouteTable.Routes.GetVirtualPath(c.ControllerContext, rvd).VirtualPath;
}
}
使用方法:
public ActionResult Index() {
ViewData["Message"] = this.Action("home", "about");
return View();
}
ViewData["Message"] = this.Action("home", "about");
return View();
}
本文介绍了一个静态类CUrl中的扩展方法,该方法用于模仿Url.Action的功能,通过RouteCollection实现Url路由。具体实现中,创建了一个RouteValueDictionary,并添加了控制器和操作名称,最后返回虚拟路径。
4万+

被折叠的 条评论
为什么被折叠?



