路由到带有Razor页面的控制器

我的_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中很重要,我在ConfigureServices方法下有services.AddMvc(o => o.EnabledEndpointRouting = false);,在Configure方法下有app.UseMvc();。我是Razor Pages的新手,所以如果有更好的约定可以达到相同的效果,请提出建议。

编辑:我找到了解决方案,我向搜索控制器添加了路由属性。尽管它是一个合适的解决方案,但我实际上将MVC约定应用于由Razor Pages组成的项目。如果任何人都可以提供适用于Razor Pages的解决方案,欢迎回答。

wangyi19890218 回答:路由到带有Razor页面的控制器

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

本文链接:https://www.f2er.com/3169983.html

大家都在问