Маршрутизация к контроллеру с помощью бритвенных страниц - PullRequest
0 голосов
/ 04 ноября 2019

В моем _partial.cshtml есть следующая форма:

<form class="form-inline text-center" asp-controller="Search" asp-action="Index">
 @Html.TextBoxFor(m => new Search().SearchTerm, new { @class = "form-control search-term-box", placeholder = "Search keyword" })
       <span class="btn btn-outline-primary mr-1 ml-1">Near</span>
        @Html.TextBoxFor(m => new Search().Location, new { @class = "form-control search-term-box mr-2", placeholder = "Los Angeles, CA" })
   <button class="btn btn-primary my-2 my-sm-0" type="submit">Search</button>
   </form>

Мой SearchController.cs:

        [BindProperty]
        public Search SearchModel { get; set; }

        [HttpPost]
        public IActionResult Index(Search term, Search location = null)
        {
            SearchModel = new Search()
            {
                SearchTerm = term.ToString(),
                Location = location.ToString()
            };

            //(Razor) Search Page with no page model
            //Bind SearchModel to page
            return View("Search");
        }

В ASP.Net MVC я могу сделать что-то подобное иэто будет работать нормально, но как мне заставить это работать с ASP.Net Core Razor Pages? Нажатие кнопки отправки ничего не делает. Если это имеет значение в моем Startup.cs, у меня есть services.AddMvc(o => o.EnabledEndpointRouting = false); в методе ConfigureServices и app.UseMvc(); в методе Configure. Я новичок в Razor Pages, поэтому, если есть лучшее соглашение для достижения того же самого, пожалуйста, совет.

Редактировать: Я нашел решение, я добавил атрибут маршрутизации в свой контроллер поиска. Хотя это подходящее решение, я по существу применил соглашение MVC к своему проекту, который состоит из Razor Pages. Если кто-то может предложить решение, которое применимо к Razor Pages, ответы приветствуются.

1 Ответ

0 голосов
/ 04 ноября 2019

По умолчанию бритвенные страницы находятся в корневой папке, и по умолчанию используется соглашение об именах «/ Pages». Вы можете найти это в файле startup.cs. Измените имя папки на желаемое имя папки проекта как «xyz», а затем попробуйте перейти на страницу как «имя контроллера / index.cshtml». Не забудьте добавить расширение как .cshtml

...