【问题标题】:Routing to Controller with Razor Pages使用 Razor 页面路由到控制器
【发布时间】:2020-02-29 06:32:39
【问题描述】:

我的 _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 =&gt; o.EnabledEndpointRouting = false);,在 Configure 方法下有 app.UseMvc();。我是 Razor Pages 的新手,所以如果有更好的实现相同的约定,请提出建议。

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

【问题讨论】:

    标签: asp.net-mvc razor-pages


    【解决方案1】:

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

    【讨论】:

    • 尽管您可能是对的,但这不是我正在寻找的解决方案。在我的情况下,我不想更改默认约定。我有一个 Pages 文件夹并创建了一些剃须刀页面。无论如何,我通过向搜索控制器添加路由属性来解决问题。
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2021-10-02
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多