пытается начать работу с ASP.NET MVC.Маршруты ASP.NET не запускаются, как я ожидаю
У меня возникли трудности при настройке основных маршрутов.
Мои маршруты заключаются в следующем:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ImproItem",
url: "{controller}/{action}/{type}",
defaults: new { controller = "ImproItemForm", action = "Index", type = UrlParameter.Optional }
);
}
мой взгляд вызовы:
<li>@Html.ActionLink("linkLabel", "Index", "ImproItemForm", new { type = "blablabla" }, null)</li>
Мои действия контроллера сиг является:
public class ImproItemFormController : Controller
{
...
public ActionResult Index(String t)
{
...}
}
мнение генерирует следующий HTML:
<li><a href="/ImproItemForm?type=blablabla">linkLabel</a></li>
Это выглядит хорошо для меня. Однако эта ссылка правильно вызывает действие контроллера (используя маршрут ImproItem), но не передает аргумент blablabla. Параметр t = null при отладке приложения.
Можете ли вы объяснить мне, почему? Что я должен изменить, чтобы правильно принять аргумент blablabla?
Теперь, если я запустить приложение и попытаться просмотреть
Также это нормально, что когда я просматриваю: http://localhost:55193/ImproItemForm/Index?id=foobar Это называют (т String) метод ImproItemFormController.Index? я не ожидал, что этот URL будет соответствовать этому маршруту:
routes.MapRoute(
name: "ImproItem",
url: "{controller}/{action}/{type}",
defaults: new { controller = "ImproItemForm", action = "Index", type = UrlParameter.Optional }
);
Я думал, что аргумент должен иметь такое же имя, чем в маршруте: типа, а не идентификатор.
Thx заранее за вашу помощь.
'type' не' t'. Измените метод на 'ActionResult Index (String Type)' или ссылку paramater на 'new {t =" blablabla "}' (в этом случае маршрут должен быть «url:» {controller}/{action}/{ t} ", –