в одном из моих просмотров asp.net mvc 2 У меня есть следующее утверждение
window.location.href = '<% = Url.Action("Index","Feature", new {id=""}) %>/' + $("#ProductId").val();
как видно $ ("# ProductId"). Val () может быть вычислено только из действия клиента и поэтому вне url.Action
У меня есть маршруты, как показано ниже:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.IgnoreRoute("{*allimages}", new {allimages = @".*\.jpg(/.*)?"});
routes.MapRoute(
"Default", // Route name
"{controller}.mvc/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"DefaultIndex", // Route name
"{controller}.mvc/{id}", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
routes.MapRoute("Root", "", new { controller = "Home", action = "Index", id = "" });
}
Запрос с Url.Action завершается неудачно, потому что маршрут считает «действие» «id».
Как я могу убедиться, что конфигурация маршрута в "DefaultIndex" проверена и URL-адрес
Ключ >> Значение
контроллер = функция
действие = индекс
id = 9a1347dc-60b0-4b3b-9570-9ed100b6bc6a
Редактировать 2
Изображение 2:
Редактировать 1 - Порядок маршрута
Я почти думал, что решил это, изменив порядок маршрута
routes.MapRoute(
"DefaultIndex", // Route name
"{controller}.mvc/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}.mvc/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute("Root", "", new { controller = "Home", action = "Index", id = "" });
это сработало
http://localhost:61000/Feature.mvc/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a/
, но не удалось опубликовать сообщение на той же странице
http://localhost:61000/Product.mvc/List
**** История ****
Использовали + $ ("# ProductId"). Val ();
= "/ domainname [псевдоним виртуального каталога] /Fewature.mvc/Index" + $ ("# ProductId"). val ();
всегда работал, хотя мне приходилось менять все сценарии при публикации на сервере имя домена [псевдоним виртуального каталога] / переход с разработки на тестирование и на производство
пытается оптимизировать его:
Ранее было следующее утверждение:
window.location.href = '<% = Url.Action ("Index", "Feature"})%> /' + $ ("# ProductId"). Val ();
приведет к нескольким значениям Id
http://localhost:61000/Feature.mvc/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a/3c5941e4-cb25-4d6f-9117-9ed100b4ca91
отображает существующий маршрут {id} в Url.Action ("Index", "Feature"}
в результате NoMatch
Введено
new {id = ""} чтобы обойти это.