Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存搜索字符串以在ASP.NET核心Web应用程序的其他cshtml页面中使用_C#_Asp.net Core_Razor - Fatal编程技术网

C# 保存搜索字符串以在ASP.NET核心Web应用程序的其他cshtml页面中使用

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

我试图保存html表单中的输入(地址),以便在asp.net核心web应用程序的其他cshtml页面中使用。我还使用Razor作为模板语言。我有一个web应用程序,其中用户将在一个页面上输入地址,然后在另一个页面上使用该输入并将其放入api调用中。我的html表单如下

    <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");