Как указать вид по умолчанию с HttpGet в ASP Core - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь вызвать представление из Startup.cs (ниже). Контроллер называется AppController, а метод - Index.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseDeveloperExceptionPage();
    app.UseStaticFiles();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
        name: "default",
        template: "{controller=App}/{action=Index}");
    });
}

Когда я запускаю свое приложение (http://localhost:8000/), я получаю ошибку 404. Я думал, что выше я устанавливал значение по умолчанию для сопоставления методу Index в AppController.cs. Я думаю, что проблема в том, что более у моего контроллера индекса у меня есть HttpGet, потому что у меня есть форма, которую я хочу отправить на этой странице (которая работает)

[HttpGet("index")]
public IActionResult Index()
{
    return View();
}

Страница индекса отображается, как и ожидалось, когда я перехожу к http://localhost:8000/index. Я что-то не так делаю в Configure?

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Я добавил следующее к , позволяя сопоставлять несколько маршрутов одному действию :

[HttpGet("")]
[HttpGet("index")]
public IActionResult Index()
{
    return View();
}
0 голосов
/ 29 июня 2018

[HttpGet] будет хорошо. Вам также следует проверить документацию Routing в ASP.NET Core Docs

0 голосов
/ 28 июня 2018

Вы должны просто использовать:

[HttpGet("")]

или просто

[HttpGet]

Вместо

[HttpGet("index")]
Атрибут

HttpGet ожидает шаблон, поэтому, добавив string к этому атрибуту, вы говорите, что ваше действие выполняется только в том случае, если относительный URL-адрес равен «/ Index», то есть при использовании абсолютного URL-адреса "http://localhost:8000/index".

Если вы хотите, чтобы маршрут по умолчанию работал так, как вы его настроили, вам следует удалить string в атрибуте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...