Url.Action 原本利用 RouteCollection 實現 URL 路由。以下提供擴充方法重現此功能:
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;
}
}
public ActionResult Index()
{
ViewData["Message"] = this.Action("home", "about");
return View();
}
此擴充方法簡化 Controller 內部產生 URL 的寫法,直接傳入控制器與動作名稱即可取得虛擬路徑。