У меня возникла проблема при попытке использовать метод UrlHelper
Action()
, чтобы указать на действие /Home/Index
на моем сайте. Мне нужно генерировать ссылки на Index
динамически (включая параметр id
) в клиентском скрипте, поэтому я сделал очевидное:
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 самостоятельно?
EDIT:
Я не изменил маршрутизацию по умолчанию для нового проекта 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
);
}
ОТВЕТ:
Я, наконец, пошел с небольшим изменением ответа @ BFree, просто потому, что я предпочитаю 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);
}