Я новичок в MVC, но я неплохо знаком с C#. Поэтому я играл с MVC в Visual Studio, где я столкнулся с этой проблемой, и я не могу найти причину этой ошибки.Для цикла в MVC не работает для разных MapRoute
Я пытаюсь напечатать переменную n раз. Она работает очень хорошо, когда я использовать данный URL-адрес
http://localhost:18665/HelloWorld/Welcome?namelala=Rob&numtimes=3
Выход, как и ожидалось -
This is Rob
This is Rob
This is Rob
Однако, когда я пытаюсь то же самое с этим URL
http://localhost:18665/HelloWorld/Welcome/3/Rob
Выходом является
This is Rob
My RouteCo nfig код:
namespace WebApplication1
{
public class RouteConfig
{
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: "Name_Route",
url: "{controller}/{action}/{numtimes}/{namelala}"
);
}
}
}
HomeController Код
public ActionResult Welcome(string namelala, int numtimes=1)
{
ViewBag.Message = "This is " + namelala;
ViewBag.numtimes = numtimes;
return View();
}
Welcome.cshtml Код
<h2>Welcome here</h2>
<ul>
@{
for (int i = 0; i < ViewBag.numtimes; i++)
{
<li>@ViewBag.Message</li>
}
}
</ul>
Что я делаю неправильно?
Ваших маршруты находятся в неправильном порядке. Наиболее конкретный маршрут должен быть до значения по умолчанию. –
Значит, это означает, что только один будет работать одновременно? Есть ли способ убедиться в том, как работает цикл? EDIT: ------------- Я переместил свой пользовательский маршрут сверху. Оба сейчас работают нормально. Спасибо :) –
Маршрутизация оценивает каждый маршрут, и как только один из них совпадает, данный обработчик будет вызван (например, Controller & Action). Вы можете отлаживать, какой маршрут соответствовал, используя Glimpse (http://getglimpse.com). – Marc