我在嘗試使用UrlHelper
Action()
方法指向我網站上的/Home/Index
操作時遇到問題。我需要生成的客戶端腳本鏈接到Index
動態(包括id
參數),所以我做了很明顯的:ASP.NET MVC UrlHelper.Action()沒有返回正確的路徑
var url = '@this.Url.Action("Index", "Home")';
function generateLink (id) {
var anchor = "<a href='" + url + "/" + id + "'>Select Me</a>"
return anchor;
}
但這裏所產生的錨標籤是這樣的:
<a href='http://localhost//1013'>Select Me</a>
顯然沒有路由到正確的操作。我假設Url.Action()
是「智能」,通過確定Home
和Index
是我默認路由的默認值,所以http://localhost
和http://localhost/Home
和http://localhost/Home/Index
在功能上是相同的,但我需要以某種方式強制它選擇完整的URL選項。
有沒有辦法做到這一點,或者我將不得不建立自己的URL?
編輯:
我沒有改變從默認路由的一個新的MVC3項目:
public static void RegisterRoutes (RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
}
答:
我最後用@貝麗的回答略有變化去,因爲如果我可以使用它,我更喜歡Html.ActionLink()到Url.Action:
var anchor = '@this.Html.ActionLink("Select Me", "Index", "Home", new { id = "XXX" }, null)';
function generateLink (id) {
return anchor.replace("XXX", id);
}
我們需要看到路由定義(全部爲優選),所以我們可以看到如果存在衝突或者您沒有指定路線的參數。 – casperOne 2011-05-06 14:07:31