Способ эвакуации вызова в asp.net mvc с атрибутом route - Маршрутизация в asp.net mvc

Все, что я хочу, 2 пути для вызова действий. например

http://localhost:16800/Content1/1/text

а также

 http://localhost:16800/Content1/1

и мой routeconfig является маршрутизацией по умолчанию. Я использую из атрибута маршрута.

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapMvcAttributeRoutes();
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

а мой контроллер использовал атрибут маршрута так:

namespace WebApplication2.Controllers

{

 [RoutePrefix("Content1")]
[Route("{action=Index}")]
public class Content1Controller : Controller
{

    [Route("{id}/{text}")]
    public ActionResult Index(int id, string text)
    {
        return View();
    }
}

} Теперь этот способ работает для меня. http://localhost:16800/Content1/1/text

и этот способ не работает для меня. http://localhost:16800/Content1/1 Я просто использую оба способа для вызова моего действия. Напомни, что я использую [Route("{action=Index}")] на моем контроллере не нужно указывать имя действия в моем URL.

1 ответ

Try this, It will work(tested).


namespace WebApplicationExamples.Controllers
    {
        [RoutePrefix("Content1")]
        [Route("{action=Index}")]
        public class Content1Controller : Controller
        {

            // GET: Content1
            [Route("{id}")]
            [Route("{id}/{text}")]
            public ActionResult Index()
            {
                return View();
            }
        }
    }
Другие вопросы по тегам