Могу ли я иметь классы контроллера приложений MVC для вызовов API AJAX в проекте базового веб-приложения APS.NET? - PullRequest
1 голос
/ 31 мая 2019

Я создал новый проект приложения .NET Core, ориентированный на 2.1. По умолчанию он использует маршрутизацию страниц, поэтому новые создаваемые мной cshtml-файлы следуют стандартной маршрутизации страниц файлов.

Далее я хотел проверить выполнение вызовов ajax от клиента к моему серверу.Я попытался добавить контроллер приложения MCV с именем TestController и добавил к нему следующее:

public class TestController : Controller
    {
        // GET: /<controller>/
        public IActionResult Index()
        {
            return View();
        }

        [HttpPost("Test/RunTest")]
        public ActionResult<string> RunTest()
        {
            return "Got it!";
        }
    }

Вот мой файл startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseMvc();
        }

Когда я пытаюсь сделать сообщение черезПочтальон на https://localhost:44313/Test/RunTest, я получаю страницу 404 не найдена ошибка.Я думаю, потому что мой бритвенный проект не направляет запросы контроллерам в моем проекте, но я не уверен.

Что я должен сделать, чтобы сделать ajax-запрос к контроллерам MVC?

1 Ответ

1 голос
/ 31 мая 2019

Шаблон маршрута атрибута в вашем действии Runtest не имеет префикса, поэтому вы не должны добавлять префикс URL к "/ Test /". Сообщение AJAX должно идти в https://localhost:44313/RunTest.

Если вы хотите, чтобы имя контроллера было частью маршрута, вы можете включить его в шаблон:

[HttpPost("Test/RunTest")]

Или вы можете указать префикс для всех действий в контроллере:

[RoutePrefix("Test")]
public class TestController : Controller
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...