Asp.Net Core 上的 Razor 页面 - 添加了 Razor 页面但无法让页面显示

Posted

技术标签:

【中文标题】Asp.Net Core 上的 Razor 页面 - 添加了 Razor 页面但无法让页面显示【英文标题】:Razor Pages on Asp.Net Core - Added Razor Page but cant get page to show 【发布时间】:2021-06-26 18:06:44 【问题描述】:

我仍在为 .Net Core 的 Razor Pages 解决很多问题,并且有点卡住了一些东西。我添加了一个新的 Razor 页面:

位于Pages 文件夹中:

在现有页面上,我添加了一个输入和一个按钮来启动搜索:

哪个onClick调用了以下javascript函数:

在下面的屏幕截图中,当我在其中设置断点时会触发 OnGetAsync 方法,并且可以看到输入值 SearchValue 已填充:

但是我希望浏览器随后会显示Search.cshtml 页面。相反,浏览器只停留在当前的 index.cshtml 页面上。

是我遗漏了什么还是我做错了?

【问题讨论】:

【参考方案1】:

不过,我希望浏览器随后会显示 Search.cshtml 页面。相反,浏览器只停留在当前的 index.cshtml 页面上。

那是因为$.get只有在你在success函数中做了某些事情时才会回调结果。

你需要像下面这样改变jquery:

@page
@model IndexModel

<input id="inpSearchMembers" placeholder="Search for a Member..." />
<input id="btnSearchMembers" type="button" value="Search"  onclick="SearchMembers()" />
@section Scripts

    <script>
        function SearchMembers() 
            var searchValue = $("#inpSearchMembers").val();
            debugger;
            $.get("/Search",  searchValue: searchValue , function (data) 
                window.location.href = "/Search";   //add this...
            );
        
    </script>

顺便说一句,你创建了一个disabled的按钮,点击它并触发onclick事件是不可能的。

实际上,我认为您可以在不使用 jquery 的情况下使用表单提交,如下所示更改您的 Index.cshtml:

@page
@model IndexModel
<form asp-page="Search" method="get">
    <input name="searchValue" placeholder="Search for a Member..." />
    <input type="submit" value="Search" />
</form>

【讨论】:

啊太棒了...!表单提交选项是我想的。昨晚睡着的时候,我突然想到要尝试这些方面的东西,所以谢谢你!顺便说一句 - 我忘了添加控制按钮的禁用属性在输入文本时变为活动状态的 jquery。 :) 再次感谢!【参考方案2】:

在您的页面控制器中,您应该有一个返回视图的操作:

public IActionResult Search()

    return View();

【讨论】:

感谢您的回复。我在一个 ASP.NET Core Razor Pages 应用程序(不是 MVC)上,我认为您的建议将用于(即返回 View())。尽管如此,我还是尝试了你的建议,但恐怕没有运气。

以上是关于Asp.Net Core 上的 Razor 页面 - 添加了 Razor 页面但无法让页面显示的主要内容,如果未能解决你的问题,请参考以下文章

ASP .NET Core Razor 页面中的授权

在 ASP.Net Core Razor 页面中添加 Toast

覆盖 asp.net core razor 页面中的 razor 视图

ASP.NET Core 2.1 Razor 页面返回带有模型的页面

Asp.net core razor pages 加载部分页面

ASP.NET Core Razor 页面与完整 MVC Core [关闭]