Url.Action、Url.Content
Url.Action與Url.Content方法都是用來產生網址路徑的方法,
一、Url.Content
只是Url.Content方法比較單純只是用來產生相對路徑而已,如下範例,
@{
ViewBag.Title = "Home Page";
}
@Url.Content("/file.html")
<br />
@Url.Content("./file.html")
<br />
@Url.Content("~/file.html")
結果你將會發現Url.Content方法會幫你取得相對路徑
二、Url.Action
而Url.Actioin路徑產生方式較多元,有較多的參數可設定
Url.Actioin路徑產生方法列表
1、Action()
產生自已頁面的類似Url路徑
controller為
using System.Web.Mvc;
namespace test_route.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
Index.cshtml為
@{
ViewBag.Title = "Home Page";
}
@Url.Action()
Url.Action()所產生的路徑為
/Home/Index
2、Action(String actionName)
繼承上例的controller
Index.cshtml為
@{ ViewBag.Title = "Home Page"; } @Url.Action("About")
所產生的路徑為
/Home/About
3、Action(String actionName, Object routeValues)
controller為(驗證用)
using System.Web.Mvc;
namespace test_route.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
return View(new { id });
}
}
}
Index.cshtml為
@{
ViewBag.Title = "Home Page";
}
@Url.Action("Index", new { id = 001 })
所產生的路徑為
/Home/Index/1
4、Action(String actionName, RouteValueDictionary routeValues)
controller為(驗證用)
using System.Web.Mvc;
namespace test_route.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
return View(new { id });
}
}
}
Index.cshtml為
@{
ViewBag.Title = "Home Page";
RouteValueDictionary RouteValueDictionary = new RouteValueDictionary();
RouteValueDictionary.Add("id", 001);
}
@Url.Action("Index", RouteValueDictionary)
所產生的路徑為
/Home/Index/1
5、Action(String actionName, String controllerName, Object routeValues, String protocol)
controller為(驗證用)
using System.Web.Mvc;
namespace test_route.Controllers
{
public class HomeController : Controller
{
public ActionResult Index(int? id)
{
return View(new { id });
}
}
}
Index.cshtml為
@{
ViewBag.Title = "Home Page";
}
@Url.Action("Index", "Home", new { id = 001 }, "http")
所產生的路徑為
http://localhost:61556/Home/Index/1
6、Action(String actionName, String controllerName, RouteValueDictionary routeValues, String protocol, String hostName)
Index.cshtml為
@{
ViewBag.Title = "Home Page";
RouteValueDictionary RouteValueDictionary = new RouteValueDictionary();
RouteValueDictionary.Add("id", 001);
}
@Url.Action("Index","Home", RouteValueDictionary,"http", "fish.poix.org")
所產生的路徑為
http://fish.poix.org:61556/Home/Index/1
三、UrlHelper
UrlHelper 不只提供 Url.Action 與 Url.Content 方法,
像是 Url.GenerateUrl、Url.Encode、Url.RouteUrl 方法,都是值得注意的。
參考資料: