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 页面中添加 Toast
覆盖 asp.net core razor 页面中的 razor 视图
ASP.NET Core 2.1 Razor 页面返回带有模型的页面