C# 保存搜索字符串以在ASP.NET核心Web应用程序的其他cshtml页面中使用
我试图保存html表单中的输入(地址),以便在asp.net核心web应用程序的其他cshtml页面中使用。我还使用Razor作为模板语言。我有一个web应用程序,其中用户将在一个页面上输入地址,然后在另一个页面上使用该输入并将其放入api调用中。我的html表单如下C# 保存搜索字符串以在ASP.NET核心Web应用程序的其他cshtml页面中使用,c#,asp.net-core,razor,C#,Asp.net Core,Razor,我试图保存html表单中的输入(地址),以便在asp.net核心web应用程序的其他cshtml页面中使用。我还使用Razor作为模板语言。我有一个web应用程序,其中用户将在一个页面上输入地址,然后在另一个页面上使用该输入并将其放入api调用中。我的html表单如下 <form method="post" action="/Features"> <p> Address: <in
<form method="post" action="/Features">
<p>
Address: <input type="text" name="searchString"/>
<input type="submit" value="Search" />
</p>
</form>
地址:
我以前使用过会话,但它是用于使用web表单的asp.net项目的(我相信),我不确定这是否是我应该走的路线。输入的地址不需要保持安全。感谢您的帮助。以下是在Razor页面中使用TempData的演示: cshtml:
<form method="post" asp-page-handler="Features">
<p>
Address: <input type="text" name="searchString"/>
<input type="submit" value="Search" />
</p>
</form>
要使用searchString的其他页面:
string searchString=TempData["searchString"];
//TempData.Keep(); can help you keep the value,and you can still use the searchString value in other place
TempData.Keep();
或者你可以使用
string searchString=TempData.Peek("searchString");
因此,您仍然可以保留searchString值,这里有两个选项:
TempData
中,然后重定向到第二个页面,在那里您将使用提交的值(这里您使用Post/redirect/Get
模式,以避免通过页面重新加载错误地再次提交表单)
地址:
处理程序:
public IActionResult OnPostFeatures(字符串搜索字符串)
{
TempData[“Key”]=搜索字符串;
返回重定向Topage(“/第二页”);
}
然后在第二页上,您可以通过以下方式获得搜索字符串
:
string value=TempData[“Key”]作为字符串;
正如我所说的,你也可以将你的表格提交到第二页,在那里你可以利用你的价值做任何你想做的事情。请注意多次提交。您可以使用session、ViewBag、,TempData但是使用视图模型更干净如果你从post请求返回一个视图,那么简单的模型/ViewBag/ViewData就可以了,但是如果你重定向到另一个页面,那么使用
TempData
是最好的选择。所以我对Razor页面有点陌生。我使用的是Razor pages PageModel类,我读过的这些类实际上也是视图模型。如何使用视图模型来保存此文件?
string searchString=TempData.Peek("searchString");