Asp.net mvc 使用Razor页面路由到控制器

Asp.net mvc 使用Razor页面路由到控制器,asp.net-mvc,razor-pages,Asp.net Mvc,Razor Pages,我在my_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" })

我在my_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>
在ASP.NETMVC中,我可以做类似的事情,它可以很好地工作,但是如何让它与ASP.NETCoreRazor页面一起工作呢?单击submit按钮不会执行任何操作。如果这在我的Startup.cs中很重要,那么我有
services.AddMvc(o=>o.enabledpointrouting=false)和
app.UseMvc()在配置方法下。我是新来的剃须刀页面,所以如果有一个更好的公约,实现同样的请咨询


编辑:我找到了解决方案,我在搜索控制器中添加了路由属性。虽然这是一个合适的解决方案,但我基本上将MVC约定应用到了由Razor页面组成的项目中。如果有人能提供适用于Razor页面的解决方案,欢迎回答。

默认情况下,Razor页面位于根文件夹下,其默认命名约定为“/Pages”。您可以在startup.cs文件中找到它。将文件夹名称更改为所需的项目文件夹名称“xyz”,然后尝试以controllername/index.cshtml导航页面。别忘了添加扩展名为.cshtml

尽管你可能是对的,但这并不是我想要的解决方案。在我的情况下,我不想更改默认约定。我有一个页面文件夹,并创建了一些razor页面。无论如何,我通过向搜索控制器添加路由属性修复了这个问题。
        [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");
        }